目录
原题
1019. General Palindromic Number (20)
思路
对N进行除以b取余,一直到N为零为止。然后判断所有余数是否回文。
代码
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main(int argc, const char * argv[]) {
vector<int> newnum;
setvbuf(stdin, new char[1 << 20], _IOFBF, 1 << 20);
setvbuf(stdout, new char[1 << 20], _IOFBF, 1 << 20);
int num, base;
scanf("%d %d", &num, &base);
if(!num){
printf("%s\n%d\n", "Yes", num);
return 0;
}
while(num){
newnum.push_back(num % base);
num /= base;
}
int i, j;
for(i = 0, j = static_cast<int>(newnum.size()) - 1; i <= j; i++, j--){
if(newnum[i] != newnum[j]){
break;
}
}
if(i <= j){
puts("No");
}
else{
puts("Yes");
}
int temp = newnum.back();
newnum.pop_back();
printf("%d", temp);
while(!newnum.empty()){
temp = newnum.back();
newnum.pop_back();
printf(" %d", temp);
}
putchar('\n');
return 0;
}