挂上题目链接~https://www.patest.cn/contests/pat-a-practise/1019
题意:判断b进制下所给数是否是回文数,并且回文数的最后一位不能为0,但0是满足条件的回文数。
一开始没仔细看题,看了样例直接开做结果有一个点过不去,就是上述提到的点TAT。。所以以后要冷静读题a
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1000;
int num[maxn], num2[maxn];
int len = 0;
bool solve(int x, int b){
if(x == 0) {
len = 1;
return true;
}
while(x != 0){
num[len++] = x%b;
x /= b;
}
for(int i = 0,j=len-1; i<len; j--,i++){
num2[i] = num[j];
}
if(num[len-1] == 0) return false;
for(int i = 0; i<len; i++){
if(num[i] != num2[i]) return false;
}
return true;
}
int main(){
int n,b;
scanf("%d%d", &n, &b);
if(solve(n, b)) printf("Yes\n");
else printf("No\n");
for(int i = 0; i<len; i++){
if(i != 0) printf(" ");
printf("%d", num2[i]);
}
return 0;
}