题目描述是找到 [x, 2x] 范围内 满足所有数位和 为质数,X数据大到10w位,直接查肯定不行

需要转换一下思路,因为要求只要1个结果,自己构造肯定是怎么方便怎么来

所以只需要考虑答案的前1~2位,后面全部补0,这样就是最简单的办法

现在来确定一下范围就行,

当X = 1.ddd × 10n ,[ x, 2x] 范围就是 [1.ddd × 10n , 2(or3).ddd × 10n], 那么2 × 10n 肯定是在这个范围内的

以此类推,X = 2.ddd × 10n 时,3 × 10n 在目标范围内...这样一直推到9就好

有了这样的结论就可以下手了

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

vector<int> table = {-1, 2, 3, 5, 5, 7, 7, 11, 11, 11};

int main() {
    int cnt;
    while (cin >> cnt) { 
        string s;
        while(cnt-- > 0){
            cin >> s;
            int len = s.size();
            cout << table[s[0] - '0'] <<  string(len - 1, '0') << endl;
        }
    }
}