本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
-1
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
int s[1000000];
int main()
{
int j=0;
for(int a=1; a<10; a++)
for(int b=0; b<10; b++)
for(int c=0; c<10; c++)
s[j++]=a*10000+b*1000+c*100+b*10+a;
for(int a=1; a<10; a++)
for(int b=0; b<10; b++)
for(int c=0; c<10; c++)
s[j++]=a*100000+b*10000+c*1000+c*100+b*10+a;
int m;
cin>>m;
char ch[7];
int sum;
int k=0;
for(int i=0; i<j; i++ )
{
sum=0;
int t;
t=s[i];
sprintf(ch,"%d",t);
int l=strlen(ch);
for(int tt=0;tt<l;tt++)
{
sum=sum+(ch[tt]-'0');
}
if(sum==m)
{
k=1;
for(int i=0;i<l;i++)
cout<<ch[i];
cout<<endl;
}
}
if(!k)
cout<<-1<<endl;
return 0;
}