题目描述是找到 [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; } } }