Description
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。(1< =n< =54)
Input
输入一行,包含一个正整数n。
Output
按从小到大的顺序输出满足条件的整数,每个整数占一行。
Sample Input
52
Sample Output
899998
989989
998899
思路:一开始我想的是用暴力来解决,就是6个for循环(从0~9)来计算,时间复杂度也不过是10^6,没想到居然计算不出来,就只能优化成这样的了。
#include <cstdio>
#include <iostream>
#include <cmath>
#include <
string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
using namespace std;
#define ll long long
const int maxn =
5100;
int n, id, a[
58][
100][
100], num[
100], number[
100];
int main()
{
scanf("%d", &
n);
id =
0;
for(
int i =
10000; i<
999999; i++
)
{
int ge = i%
10;
int shi = (i/
10)%
10;
int bai = (i/
100)%
10;
int qian = (i/
1000)%
10;
int wan = (i/
10000)%
10;
int shiwan = i/
100000;
if(i <=
100000 && ge+shi+bai+qian+wan == n && ge == wan && shi ==
qian)
{
num[id] =
i;
id++
;
}
else if(i>
100000 && ge+shi+bai+qian+wan+shiwan == n && ge == shiwan && shi == wan && bai ==
qian)
{
num[id] =
i;
id++
;
}
}
for(
int i =
0; i<id; i++
)
printf("%d\n", num[i]);
return 0;
}
转载于:https://www.cnblogs.com/RootVount/p/11249090.html
相关资源:JAVA上百实例源码以及开源项目