直接用了1015的取回文函数,秒答
思路
用动态数组存储每一位数字
反着构成新的数字判断与原数字是否相等即可。
#include <cstdio>
#include <cmath>
#include <vector>
using namespace std;
vector<int> num;
int reverse(int n,int r)
{
int result = 0;
do {
num.push_back(n%r);
n /= r;
}while (n != 0);
for (int i = num.size()-1; i >= 0 ; --i) {
result += num[num.size()-i-1]*pow(r,i);
}
return result;
}
int main()
{
int N,b;
scanf("%d %d",&N,&b);
int reverse_n = reverse(N,b);
if(reverse_n == N) printf("Yes
");
else printf("No
");
for (int i = num.size()-1; i >=0; --i)
{
printf("%d",num[i]);
if(i != 0) printf(" ");
}
}