属于水题,主要是涉及到回文问题。
这里标注下进制转换的方法:
while(n) { p[i]=n%basis; n/=basis; }
见代码:
#include <stdio.h> int revert(int n,int base) { int p[20]; int i=0; while(n) { p[i++]=n%base; n/=base; } int ispar=1; for(int j=0,k=i-1;j<k;j++,k--) { if(p[j]!=p[k]) { ispar=0; break; } } return ispar; } int main() { int n; while(scanf("%d",&n)!=EOF&&n) { int result[15]; int r=0,i; for(i=2;i<=16;i++) { int ispar=revert(n,i); if(ispar) { result[r++]=i; } } if(r) { printf("Number %d is palindrom in basis",n); for(i=0;i<r;i++) printf(" %d",result[i]); printf(" "); } else { printf("Number %d is not a palindrom ",n); } } return 0; }