题目一:123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
首先要判断是否是回文数,然后还要满足位数和叠加等于输入的数n。这里判断需要用到逆序操作,我们采取的是数组存储,将每一个位数从低到高求出来然后存入倒置数组,期间要进行位数求和操作。具体代码如下:
#include "stdio.h"
int palindrom(int n)
{
int a = 0,sum = 0,b = n;
while(n)
{
a = a*10+n%10;
sum = sum+n%10;
n = n/10;
}
if(a==b)
return sum;
else
return 0;
}
int main()
{
int n;
scanf("%d",&n);
for(int i = 10000;i<999999;i++)
{
if(palindrom(i)==n)
printf("%d\n",i);
}
return 0;
}
题目二:1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
与上述基本操作相同,还少了一步判断操作。具体代码如下:
#include "stdio.h"
int palindrom(int n)
{
int a = 0,b = n;
while(n)
{
a = a*10+n%10;
n = n/10;
}
if(a==b)
return 1;
else
return 0;
}
int main()
{
for(int i = 1000;i<=9999;i++)
{
if(palindrom(i))
printf("%d\n",i);
}
return 0;
}