/* 遍历2到10逐个转换然后判断是不是回文数,就有个mark的变量记录是不是大于两种情况下的回文数 */ #include <stdio.h> /* 函数的功能就是转换然后再判断是不是回文数 */ int pd(int num) { int i, j, m, k, p, q, flag; int les[100]; k = 0; for (i = 2; i <= 10; i++) { flag = 1; j = 0; m = num; while (m) { les[j++] = m % i; m /= i; } for (p = 0, q = j-1; p <= q && flag; p++, q--) { if (les[p] != les[q]) flag = 0; } if (flag) // 这里是mark的作用 k++; } if (k >= 2) // 这里看出来mark的作用了 return 1; else return 0; }
int main() { FILE *fin = fopen("dualpal.in", "r"); FILE *fout = fopen("dualpal.out", "w"); int N, S, l, sum = 0; fscanf(fin, "%d %d", &N, &S); for (l = S + 1; sum < N; l++) { if (pd(l)) { fprintf(fout, "%d\n", l); sum++; } } fclose(fin); fclose(fout); return 0; }