ZOJ 1078 回文数
判断数N在k进制下是否为回文数,其中k∈[2,16],输出K。
wa了一次,原因:在如果不存在k的情况下,不小心在n前面加了个& 输出了n的地址,导致错误。
#include"stdio.h" int s[50000]; int main() { //freopen("1078b.txt","w",stdout); int n; while(scanf("%d",&n)!=EOF,n) { int base[16]; int i,k=0; for(i=2;i<=16;i++) { int j=0,tmp=n; for(j;tmp;j++) { s[j]=tmp%i; tmp/=i; } tmp=j; for(j=0;j<tmp/2;j++) { if(s[j]!=s[tmp-1-j]) break; } if(j>=tmp/2){ base[k]=i; k++; } } if(k) { printf("Number %d is palindrom in basis",n); for(i=0;i<k;i++) printf(" %d",base[i]); printf("\n"); } else printf("Number %d is not a palindrom\n",n); } return 0; }