问题描述
观察数字:, 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。 本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入格式
一个正整数 n (<n<), 表示要求满足的数位和。
输出格式
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-
样例输入 样例输出 样例输入 样例输出
-
题目描述
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(void)
{
int n;
int i,j,k,res,count;
int check[];
scanf("%d",&n); res = ;
for (i= ; i< ; i++)
{
count = k = ;
for (j=i ; j> ; j/=)
{
check[k] = j%; //用于验证是否满足条件
count += check[k++];//记录每位数,用于验证回文
} if (count == n)
{
for (j= ; j<k ; j++)//判断是否回文
{
if (check[j] != check[k--j])
break;
} if (j==k)//输出回文
{
res ++;
printf("%d\n",i);
}
}
} if (res == )
printf("-1"); return ;
}
C解法
解题思路:
对数字取余获得每一位,并记录以及累计其和
1.判断和是否等于n
2.判断是否为回文
满足以上条件则输出数字