特殊回文数
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
989989
998899
数据规模和约定
1<=n<=54。
题目分析
题目要求我们输出的就是一个回文数,不过它比较特殊——各位数字之和加起来等于输入的整数
解题思路
- 首先写一个回文数判断的函数
- 拆分各位数字求和。
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <stdio.h> int huiwenshu(int num, int res) { int temp=num, sum=0, count=0; while(num) { count=count+num%10; sum=sum*10+num%10; num/=10; } if(temp==sum && count == res) return 1; } int main() { int i, j, num, res; scanf("%d", &res); for(i=10000; i<1000000; i++) { if(huiwenshu(i, res)==1) printf("%d\n", i); } return 0; } |
运行截图

重点知识点
回文数判断函数
1 2 3 4 5 6 7 8 9 10 11 |
int huiwenshu(int num, int res) { int temp=num, sum=0; while(num) { sum=sum*10+num%10; num/=10; } if(temp==sum) return 1; } |