http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1078
#include <stdio.h> int main() { int n; int i,j; while(scanf("%d", &n) && n) { int sign = 0; char c[30] = {0}; int base[17] = {0}; for (i = 2; i <= 16; i++) { int m = n; int len = 0; while (m) { c[len++] = m%i; m = m/i; } sign = 1; for (j = 0; j < len/2&&sign; j++) if (c[j] != c[len -j -1]) sign = 0; if (sign) base[i] = 1; } sign = 0; for (i = 2; i <= 16; i++) if (base[i] == 1) sign = 1; if (!sign) printf("Number %d is not a palindrom\n", n); else { printf("Number %d is palindrom in basis", n); for (i = 2; i <= 16; i++) if (base[i] == 1) printf(" %d", i); printf("\n"); } } return 0; }