水题,按位取余判是否是回文串(ps:一开始还以为是进制转化,感觉10的9次方的进制转化要gg,仔细读题发现很水,所以读题要仔细)
#include <iostream>
#include <string>
#include <cstring>
#include<cmath>
#include <vector>
#include <map>
#include <stdio.h>
using namespace std;
#define MAX 100005
#define INF 0x3f3f3f3f
int a[MAX];
int main() {
int n, b,i;
scanf("%d %d", &n, &b);
int cnt = 0;
while (n) {
a[cnt++] = n%b;
n /= b;
}
for (i = 0; i < cnt / 2; i++) {
if (a[i] != a[cnt - 1 - i]) {
break;
}
}
if (i == cnt / 2) {
printf("Yes\n");
printf("%d", a[cnt - 1]);
for (i = cnt - 2; i >= 0; i--) {
printf(" %d", a[i]);
}
printf("\n");
}
else {
printf("No\n");
printf("%d", a[cnt - 1]);
for (i = cnt - 2; i >= 0; i--) {
printf(" %d", a[i]);
}
printf("\n");
}
return 0;
}