解题思路:
先用暴力的方法穷举出所有的五、六位数
然后再到循环里面判断,是否符合题目要求,符合则输出
回文数就是从左往右看和从右往左看都是一样的,例如:12321 从右边往左边看还是12321
接下来就是如何把这些转换成编程的思维
正着和反着都一样,那就是这个数字反转后,和原来的值一样,那么,他就是回文数
数字反转的代码:
while(num > 0) { a = a * 10 + num % 10; //a的初始值为0 num = num / 10; }
例如:12321的反转
先加上12321 % 10 的值 , 也就是 1
之后,12321 / 10 = 1232
然后再进行循环
不过,1要先乘10 变成 10 之后 再加上 1232 % 10 = 2 ,所以最后的结果是12
然后 1232 / 10 = 123
之后一直这样的循环
直到12321被除成了0 , 就可以退出循环了
接下来还有一个题目的要求
就是这些回文数中的每一个数加起来,要为一开始输入的值
那我们就可以在之前的循环中,把每次模10的结果累加起来,再用这个数和一开始输入的数进行比较
看是否相同
参考代码:
#include <stdio.h> int main() { int n , num; scanf("%d", &n); for (int i = 10000; i <= 999999; i++) { int t = i,t2 = i; int sum = 0, num = 0; while (t > 0) { sum += t % 10; num = num * 10 + t % 10; t /= 10; } if (sum == n && num == i) printf("%d\n", i); } return 0; }
0.0分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复