Description
如果一个数从左边读和从右边读一样,那么我们说这是一个回文数。例如,75457是一个回文数。当然,数的这个特性还依赖于表示它的进制。如果用十进制表示17,它不是回文数;但是如果用二进制(10001)表示它,它就是一个回文数。本题的目标是,输入一个整数n和它的进制d,判断整数n在d进制下是否为回文数。
Input
第一行输入一个数T表示有T组测试数据。接下来的T行,每行两个数,分别是整数n和进制d。
Output
若是回文数,则输出"Number'n'is palindromein basis 'd'"(不包括引号),若不是回文数,则输出"Number 'n' is not palindrome in basis 'd'"(不包括引号)。
Sample Input
2 17 2 19 4
Sample Output
Number 17 is palindrome in basis 2 Number 19 is not palindrome in basis 4
这道题做起来不难,但是因为格式问题WA了七次我也是醉了。。。唉,废话不多说,上代码吧:
#include<stdio.h> int fun(int n,int d) { int a[20]={0}; int index = 0,x,y,i; x = n; y = n %d; while(x != 0) { a[index] = y; index ++; x = x/d; y = x%d; } //进制转换 for(i =0; i < index/2;i++) { if (a[i] != a[index - i -1]) { return 0;//当前进制下不是回文数 } } return 1;//当前进制下是回文数 } int main() { int t,n,d,i; scanf("%d",&t); for (i =0; i < t; i++) { scanf("%d %d",&n,&d); if(fun(n,d) == 0) { printf("Number %d is not palindrome in basis %d\n",n,d); } else { printf("Number %d is palindrome in basis %d\n",n,d);//此处因为一个全角空格的缘故WA了七次 也是醉了啊 } } return 0; }