AT_utpc2022_a Shuffle and GCD
题目描述
对于正整数 $N$,定义 $f(N)$ 如下:
- 令 $S$ 为将 $N$ 的各位数字重新排列所能得到的所有整数的集合。注意,如果重新排列后数字开头出现 $0$,应视作前导零。比如,当 $N=102$ 时,$S=\lbrace 12,21,102,120,201,210\rbrace$。$f(N)$ 定义为能整除 $S$ 中所有元素的最大整数。
给定一个不超过 $10^{18}$ 的正整数 $K$。判断是否存在一个不超过 $10^{18}$ 的正整数 $N$,满足 $f(N)=K$。如果存在,输出其中一个满足条件的 $N$;如果不存在,输出 $-1$。
有 $T$ 个测试用例,请分别回答每个测试用例。
输入格式
输入采用如下格式从标准输入读入。
> $T$
> $\mathrm{case}_1$
> $\vdots$
> $\mathrm{case}_T$
每个测试用例为一行,内容如下:
> $K$
输出格式
输出 $T$ 行。第 $i\ (1\leq i \leq T)$ 行,对应第 $i$ 个测试用例,输出一个满足 $f(N)=K$ 的 $N$(任意一个即可),如果不存在这样的 $N$,则输出 $-1$。
说明/提示
### 样例解释 1
对于第 $1$ 个测试用例,当 $N=123$ 时,$S=\lbrace123,132,213,231,312,321\rbrace$,这些数的最大公约数为 $3$,所以 $f(N)=3$,因此这个输出是正确的。
对于第 $2$ 个测试用例,能够证明不存在 $N$ 满足 $f(N)=10$。
### 数据范围
- 所有输入均为整数
- $1 \leq T \leq 10^4$
- $1 \leq K \leq 10^{18}$
由 ChatGPT 5 翻译