B. Good times Good times 题解题意简述一个整数被称为good当且仅当它的十进制表示中最多只含两种不同数字。给定一个已经保证为 good 的整数x要求构造一个整数y满足2 y 10^9y是 goodx * y也是 good如果有多个合法答案输出任意一个即可。核心构造设x的十进制长度为n。当n 8时直接取y 10^n 1例如x 299 n 3 y 1001 x * y 299 * 1001 299299可以看到乘积就是把x拼接了两次。为什么这样一定正确因为x * (10^n 1) x * 10^n x其中x * 10^n会把x左移n位相当于在后面补n个0。再加上x结果就是xx也就是x自己拼接自己。题目保证x是 good也就是说x本身最多只含两种数字。把它复制一遍后数字种类不会变多所以x * y一定也是 good。同时当n 8时y 10^n 1 100000001 10^9并且y只包含数字1和0所以y本身也是 good。特殊情况题目中有1 x 10^8因此x最多是9位数。唯一的9位情况是x 100000000此时不能再取10^9 1因为会超过10^9。我们直接取y 10则x * y 100000000 * 10 1000000000它只包含数字1和0仍然是 good。构造示意x 6767 n 4 y 10001 6767 * 10001 ------------- 6767 67670000 ------------- 67676767乘积67676767仍然只含数字6和7。C 代码#includebits/stdc.husingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intt;cint;while(t--){string x;cinx;intnx.size();if(n9){cout10\n;}else{longlongy1;for(inti0;in;i){y*10;}couty1\n;}}return0;}复杂度分析每个测试用例只需要计算10^n其中n 9。时间复杂度O(t)空间复杂度O(1)