回文数字
Description
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
Input
一个正整数 n (10<n<100), 表示要求满足的数位和。
Output
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
解析:枚举每一位数,因为是回文数,前一半和后一半相同,所以5位数和6位数都只需要一个O(n^3)的时间复杂度,n为10。需要注意的地方是除了第一位其他位是可以等于0的。
代码语言:javascript复制#include <iostream>
#include <cstdio>
#include <cstring>
#include <bits/stdc .h>
#include <queue>
#include <algorithm>
#include <map>
#include <cstdlib>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
if(n > 54) printf("-1n");
else
{
for (int i = 1; i < 10; i )
{
for(int j = 0; j < 10; j )
{
for(int k = 0; k < 10; k )
{
if(i j k j i == n)
{
printf("%dn",i * 10000 j * 1000 k * 100 j * 10 i * 1);
}
}
}
}
for (int i = 1; i < 10; i )
{
for(int j = 0; j < 10; j )
{
for(int k = 0; k < 10; k )
{
if(i j k k j i == n)
{
printf("%dn",i * 100000 j * 10000 k * 1000 k * 100 j * 10 i * 1);
}
}
}
}
}
return 0;
}