H - Good morning! Gym - 100543H

在这里插入图片描述
思路:
枚举出所有数字,再for一遍

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
#include <map>

using namespace std;

vector<int>num;

int a[20][20] = {
    {0,-1},
    {0,1,2,3,4,5,6,7,8,9,-1},
    {2,3,5,6,8,9,0,-1},
    {3,6,9,-1},
    {4,5,6,7,8,9,0,-1},
    {5,6,8,9,0,-1},
    {6,9,-1},
    {7,8,9,0,-1},
    {8,9,0,-1},
    {9,-1}
};

void init() {
    for(int i = 1;i <= 9;i++) {
        num.push_back(i);
        for(int j = 0;j <= 10;j++) {
            if(a[i][j] == -1) break;
            num.push_back(i * 10 + a[i][j]);
            for(int k = 0;k <= 10;k++) {
                int tmp = a[i][j];
                if(a[tmp][k] == -1) break;
                num.push_back(i * 100 + a[i][j] * 10 + a[tmp][k]);
            }
        }
    }
}

int main() {
    init();
    int T;scanf("%d",&T);
    while(T--) {
        int n;scanf("%d",&n);
        int ansx = 0,ans = 1e9;
        for(int i = 0;i < num.size();i++) {
            if(abs(num[i] - n) < ans) {
                ans = abs(num[i] - n);
                ansx = num[i];
            }
        }
        printf("%d\n",ansx);
    }
    return 0;
}
原创文章 930 获赞 38 访问量 5万+

猜你喜欢

转载自blog.csdn.net/tomjobs/article/details/106063921