问题描述
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入格式
一个正整数 n (10<n<100), 表示要求满足的数位和。
输出格式
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入
44
样例输出99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
样例输入
60
样例输出
-1
代码
#include <iostream>
using namespace std;
int huiwen(int a[],int n)//判断是否是回文数字的函数
{
for(int i=0,j=n-1;i<=n/2&&j>=n/2;i++,j--)
{
if(a[i]!=a[j])
{
return 0;
}
}
return 1;
}
int main() {
int n;
cin>>n;
int a[6]={0};
int tp2=0,ans=0,num=0,book=1;
for(int i=10000;i<1000000;i++)
{
num=0;//每次记得重置
ans=0;
tp2=i;
while(tp2)//关键性操作,将数字转变为数组
{
a[num++]=tp2%10;
tp2/=10;
ans+=a[num-1];//随着加和
}
if(ans==n)
{
int x=huiwen(a,num);
if(x)
{
cout<<i<<endl;
book=0;//标记后便后来不会输出
}
}
}
if(book)
{
cout<<-1<<endl;
}
return 0;
}