给定一个数 (),求一个数 满足:
- 的十进制表示中包含 0 ~ 9 的所有数;
- ;
- 。
链接
题解
做这题需要有点数论基础,构造方法并不难,首先为了满足性质 1,我们可以令 n 的十进制表示中的前 10 位为 ,这样我们只需要考虑后 6 位即可。
设 ,想象我们通过若干次减法把 减到了 ,所以我们只要令 即可。
注意 0 的特判。
代码
#include <cstdio>
const int MAXT = 100;
const int MAXX = 1e6;
int main() {
int t;
scanf("%d", &t);
long long base = 9876543210 * 1e6;
for (int i = 0; i < t; i++) {
int x;
scanf("%d", &x);
printf("%lld\n", x == 0 ? -1LL : base + (x - base % x));
}
return 0;
}