问题描述
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
数字按从小到大的顺序排列。
解题思路
暴力大法:从小到大遍历5位或6位十进制数,符合回文定义并且数位分离之和为n,输出即可。
代码部分
#include <cstdio>
#include <cstring>
#include <string.h>
#include <iostream>
#include <queue>
#include <map>
#include <sstream>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
bool f = false;
for(int k = 10000; k <1000000; ++ k)
{
int nu[10];
int ans = 0, t, t1 = 0;
t = k;
while(t)
{
nu[t1 ++] = t%10;
ans += t % 10;
t /= 10;
}
bool f1 = true;
for(int i = t1 - 1, j = 0; i >= 0; -- i, ++ j)
{
if(nu[i] != nu[j])
f1 = false;
}
if(f1 && ans == n)
printf("%d\n",k), f = true;
}
if(!f) printf("-1\n");
return 0;
}