PAT甲级(Advanced Level) Practice 1019 General Palindromic Number
原题
1019 General Palindromic Number - PAT (Advanced Level) Practice
题目大意
判断数N的b进制是否为回文数,若是,则返回Yes,否则返回No。最后输出N的b进制表示。
解题思路
非常简单的一道进制转换题,直接套模板就行。
代码(c++)
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int n, b;
bool check(vector<int> n) { // 判断是否是回文数
for (int i = 0; i < n.size(); i ++)
if (n[i] != n[n.size() - i - 1])
return false;
return true;
}
vector<int> trans(int n, int b) { // 进制转换
vector<int> res;
do res.push_back(n % b), n /= b; while (n);
reverse(res.begin(), res.end()); // 储存在vector中的顺序是反的,也可以在输出时再反
return res;
}
int main() {
cin >> n >> b;
vector<int> k = trans(n, b);
check(k) ? puts("Yes") : puts("No");
cout << k[0]; // 末尾不能有空格,因此对第一项特殊处理
for (int i = 1; i < k.size(); i++) cout << " " << k[i] ;
}