Skip to content

14369: 【原4369】Perfect number

题目

题目描述

author: DYTLDSH 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/4369

Description

输入两个大于0的正整数a、b,且a<b。满足以下三个条件的数,称之为完美数:1. 是偶数;2. 位数是偶数;3. 是回文数。输出区间内[a,b]所有的完美数。若没有则输出0.

Input Format

输入 第一行:a b

Output Format

输出 第一行:第一个完美数 第二行:第二个完美数 ...

Sample Input

10 100

Sample Output

22 44 66 88

Sample Input

100 200

Sample Output

0

Limits

b不超过INT_MAX

ligongzzz's solution

//
// Created by ligongzzz on 2021/3/13.
//
// 4369
#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int a, b;
    cin >> a >> b;

    int start_len = min(1, int(to_string(a).length()/2));
    int cnt = 0;

    for (int len=start_len;;++len) {
        int nmax = 1;
        for (int i=len-1;i;--i, nmax*=10);

        for(int first_num=2;first_num<10;first_num+=2) {
            for(int remain=0;remain<nmax;++remain) {
                int ans = first_num*nmax+remain;
                string ans_str = to_string(ans);
                reverse(ans_str.begin(), ans_str.end());
                ans = stoi(to_string(ans)+ans_str);

                if (ans>b) {
                    if (cnt==0) cout<<0<<'\n';
                    return 0;
                }

                if (ans>=a) {
                    ++cnt;
                    cout<<ans<<'\n';
                }
            }
        }
    }

    return 0;
}