题目链接在此。
题意理解
给出两个整数n,b,问十进制整数n在b进制下是否是回文数,如果是,则输出Yes,否则输出No,并在此之后输出n在b进制下的表示。
思路
先求出十进制数n在b进制下的表示,存放在product数组,然后通过比较product[i]和product[num-1-i]是否相等,来判断是否是回文数即可。(其中num是十进制数n在b禁止下表示的位数)
AC代码
#include<stdio.h>
int product[5000];
int main(){
int n,b;
scanf("%d %d",&n, &b);
//拿到进制转换后的数
int num = 0;
do{
product[num++] = n%b;
n /= b;
}while(n!=0);
//判断是否回文并打印结果
int i;
for(i = 0; i < num; i++){
if(product[i] != product[num-1-i]) break;
}
if(i==num){ //是回文数
printf("Yes\n");
}else{
printf("No\n");
}
for(int j = num-1; j >=0 ;j--){
if(j==num-1){
printf("%d",product[j]);
}else{
printf(" %d",product[j]);
}
}
return 0;
}