这个问题的核心是生成 x 的各位数字的全排列,并对每个排列出的数字进行验证。由于 x 的最大值为 109,它最多有 10 位数字。10 个不同数字的全排列数量是 10!(约为 360 万),这是一个在现代计算机上可以接受的计算量。因此,我们可以采用直接模拟的方法:生成所有排列,然后逐一检查。
具体思路步骤如下:
预处理:
小蓝有一个正整数 x。他想将 x 的各位数码重新排列,形成一个新的正整数 y。排列时要求:
0);对于所有这样构造出的不同整数 y,小蓝想知道其中有多少个 y 满足 gcd(x,y)>1。这里 gcd(a,b) 表示 a 和 b 的最大公约数。
请你帮他计算满足条件的 y 的个数。
【数据范围】 给定的整数 x 满足 1≤x≤109,其十进制表示不含前导零。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册