题目: 当一个数字顺序写和逆序写是一样的时候称为回文数。例如,1234321是回文数字。所有的一位数都是回文数。求出十进制整数N为b进制时是否为回文数。 输入格式: 每个输入文件包含一个测试用例。每种情况由两个正数N和b组成,其中0<N≤109是十进制数,2≤b≤109是进制。数字之间用空格隔开。 输出格式: 对于每个测试用例,如果N是以b为底的回文数,则首先打印一行Yes ,否则打印No 。然后在下一行中,输出N的b进制,每个数字之间用空格隔开。请注意,在输出的末尾不能有额外的空格。 输入样例:
27 2
输出样例1:
Yes
1 1 0 1 1
输入样例2:
121 5
输出样例2:
No
4 4 1
AC代码:
#include<iostream>
using namespace std;
bool judge(int ans[],int len){
for(int j=0;j<len/2;j++){
if(ans[j]!=ans[len-j-1]) return false;
}
return true;
}
int main(){
int a,index,ans[100];
cin>>a>>index;
int i=0;
do{
ans[i++]=a%index;
a/=index;
}while(a>0);
if(judge(ans,i)) printf("Yes\n");
else printf("No\n");
for(i=i-1;i>=0;i--){
printf("%d",ans[i]);
if(i>0) printf(" ");
}
return 0;
}
|