问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入
52样例输出
899998989989
998899
数据规模和约定
1<=n<=54。
分析
题目要求的是所有的5位6位的回文字符串。那就可以用枚举的方式把所有的回文字符串都判断一遍,并不多。
然后区分开5位和6位时不同的判断方式就好。
代码
#include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> using namespace std; int main() { int inpu; int i,j; int n,num; int k[6]={0}; string result; //cin>>n; while(cin>>inpu){ for(i=0;i<6;i++) k[i]=0;//初始化 for(i=10000;i<999999;i++){//枚举所有可能 n=i; for(j=0;j<6;j++){ k[j]=n%10; n=n/10; } num=0; for(j=0;j<6;j++) num +=k[j]; if(i<=99999) {//5位的时候 if(num==inpu && k[0]==k[4]&&k[1]==k[3]) { for(j=4;j>=0;j--) cout<<k[j]; } else continue; } else{//6位的时候 if(num==inpu && k[0]==k[5]&&k[1]==k[4]&&k[2]==k[3]) { for(j=5;j>=0;j--) cout<<k[j]; } else continue; } cout<<endl; } } return 0; }