A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers.
Given any positive decimal integer N and a base b, you are supposed to tell if N is a palindromic number in base b.
回文数:正读和倒读大小一样的数字
回文数的概念不只是存在于十进制数,在任意的b进制数中也可以。
0在任意进制中都是回文数;所有一位数都是回文数
decimal integer 十进制数字
输入格式:
Each input file contains one test case. Each case consists of two positive numbers N and b, where 0<N≤1000000000 is the decimal number and 2≤b≤1000000000 is the base. The numbers are separated by a space.
输入一个十进制正数N,基数b(≥2)
输出格式:
For each test case, first print in one line Yes if N is a palindromic number in base b, or No if not. Then in the next line, print N as the number in base b in the form "ak ak−1 ... a0". Notice that there must be no extra space at the end of output.
输出两行,第一行为Yes/No,第二行为N的b进制表示数
Sample Input
27 2
Sample Output
Yes
1 1 0 1 1
代码
#include<stdio.h>
int main(){
int result[31]={0};
int n,b,counts,f=1;
scanf("%d%d",&n,&b);
for(counts=0;n>0;counts++){
result[counts]=n%b;
n/=b;
}
counts--;
for(int i=0;i<=counts;i++){
if(result[i]!=result[counts-i]){
f=0;
}
}
if(f==1) printf("Yes\n");
else printf("No\n");
printf("%d",result[counts]);
for(int i=counts-1;i>=0;i--) printf(" %d",result[i]);
return 0;
}
注意
如果表示为2进制的话,需要30位,用数组表述比较方便