问题描述
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;
}
本文介绍了一种通过编程方法寻找特定条件下五位和六位回文数的技术。这些数不仅左右对称,而且其数字之和等于给定值n。文章提供了一个C++程序实例,演示如何枚举所有可能的回文数并筛选出符合条件的数。
169万+

被折叠的 条评论
为什么被折叠?



