解题思路:

    先用暴力的方法穷举出所有的五、六位数

    然后再到循环里面判断,是否符合题目要求,符合则输出


    回文数就是从左往右看和从右往左看都是一样的,例如: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.0分

6 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论