问题描述
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入格式
一个正整数 n (10<n<100), 表示要求满足的数位和。
输出格式
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入1
44
样例输出1
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
样例输入2
60
样例输出2
-1
资源限制
时间限制:1.0s 内存限制:256.0MB
1 #include<iostream> 2 #define lli long long int 3 using namespace std; 4 bool judge(lli n,lli num){ 5 if(n/100000==0){ 6 if(n%10==n/10000&&n/10%10==n/1000%10){ 7 lli sum=(n/10000+n/1000%10)*2+n/100%10; 8 if(sum==num){ 9 return true; 10 } 11 } 12 }else{ 13 if(n%10==n/100000&&n/10%10==n/10000%10&&n/100%10==n/1000%10){ 14 lli sum=(n/100000+n/10000%10+n/1000%10)*2; 15 if(sum==num){ 16 return true; 17 } 18 } 19 } 20 return false; 21 } 22 int main(){ 23 lli n; 24 cin>>n; 25 if(n<=54&&n>=5){ 26 for(lli i=10000;i<1000000;i++){ 27 if(judge(i,n)){ 28 cout<<i<<endl; 29 } 30 } 31 }else{ 32 cout<<-1<<endl; 33 } 34 }
原文:https://www.cnblogs.com/memocean/p/12723347.html