回文数字

2023-03-09 14:01:21 浏览数 (1)

回文数字

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;
}

0 人点赞