**
蓝桥杯 特殊的回文数 C语言
**
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。
同样,先大致看看整型能否满足题目要求,由题目可知,同样是固定的位数,五位和六位,所以,整型必定满足要求。
特殊的回文数有三个要求,1.数字位五位或六位;2.每位数字之和为n;3.回文数。针对这三个要求,我们可以用循环判断来完成。外循环限制数字位数,循环内判断每位数字之和以及是否为回文数。
n:题目要求输入的各位之和
num:每次循环的数
a:存放各位的数组
i,j:循环的中间变量,i同时有计算有几位的作用
s:计算各位数字之和
#include<stdio.h>
int main()
{
int n,num=10000,a[6],i,t,s,j;
scanf("%d",&n);
while(num<1000000)
{
i=0;
t=num;
s=0;
while(t) //将每位取出
{
a[i]=t%10;
s=s+a[i++]; //计算每位的总和
t=t/10;
}
if(s==n)
{
for(j=0;j<i/2;j++) //判断是否为回文数
if(a[j]!=a[i-j-1])
break;
if(j==i/2)
printf("%d\n",num);
}
num++;
}
}