题目描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入
输入一行,包含一个正整数n。
数据规模和约定
1<=n<=54。
输出
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入复制
52
样例输出复制
899998 989989 998899
代码如下
#include<stdio.h>
int main()
{
int n;
int a[3];
scanf("%d",&n);
if(n>=2&&n<=54)//6*9==54;所以可以排除大于54的,减少运算,最小回文数10001,总和为2,排除小于2
{
for(a[0]=1;a[0]<=9;a[0]++) //检查五位进制数,a[0]只能大于1
for(a[1]=0;a[1]<=9;a[1]++)
for(a[2]=0;a[2]<=9;a[2]++)
if(a[0]+a[1]+a[2]+a[1]+a[0]==n)
printf("%d%d%d%d%d\n",a[0],a[1],a[2],a[1],a[0]);
for(a[0]=1;a[0]<=9;a[0]++) //检查六位进制数,a[0]只能大于1
for(a[1]=0;a[1]<=9;a[1]++)
for(a[2]=0;a[2]<=9;a[2]++)
if(a[0]+a[1]+a[2]+a[2]+a[1]+a[0]==n)
printf("%d%d%d%d%d%d\n",a[0],a[1],a[2],a[2],a[1],a[0]);
}
}