蓝桥杯基础训练特殊回文数

mac2024-07-16  55

一个数如果顺着读和倒着读一样,那这个数就是特殊回文数。现在要求输入一个n,使回文数的每一位数加起来等于输入的n,按从小到大求出所有这样的5位和6位回文数,有两种遍历方式,既然回文那前面的数等于后面的数,这样只需遍历3个变量就行;或者直接枚举所有的5位和6位数。 上代码:

#include<stdio.h> int main() { int n; int i, j, k; scanf("%d", &n); for(i = 1; i <= 9; i++) { for(j = 0; j <= 9; j++) { for(k = 0; k <= 9; k++) { if((i * 2 + j * 2 + k) == n) { printf("%d%d%d%d%d\n", i, j, k, j, i); } } } } for(i = 1; i <= 9; i++) { for(j = 0; j <= 9; j++) { for(k = 0; k <= 9; k++) { if((i * 2 + j * 2 + k * 2) == n) { printf("%d%d%d%d%d%d\n", i, j, k, k, j, i); } } } } return 0; } /*---------------------------------------------------*/ #include<stdio.h> int main() { int a, b, c, d, e, f, i, n; scanf("%d", &n); for(i = 10000; i <= 99999; i++) { a = i /10000; b = i / 1000 % 10; c = i / 100 % 10; d = i / 10 % 10; e = i % 10; if((a == e) && (b == d) && (a + b + c + d + e) == n) { printf("%d\n", i); } } for(i = 100000; i <= 999999; i++) { a = i /100000; b = i / 10000 % 10; c = i / 1000 % 10; d = i / 100 % 10; e = i / 10 % 10; f = i % 10; if((a == f) && (b == e) && (c == d) && (a + b + c + d + e + f) == n) { printf("%d\n", i); } } return 0; }
最新回复(0)