P1072 「NOIP2009TG」Hankson 的趣味题

aimoai / 2024-10-09 / 原文

一个简单的想法就是枚举 \(x\) 然后判断,由题意可知 \(x\) 一定是 \(b_1\) 的因数。考虑较难的情况,当 \(b_1\) 较大不能直接枚举 \(x\) 该怎么做。

因为 \(\operatorname{lcm}(x,b_0)=b_1\),所以 \(\dfrac{b_1}{b_0}\) 的每种质因子,其在 \(x\) 中的数量和在 \(b_1\) 中的数量肯定是一样的。我们先求出 \(b_1\) 中这部分质因子的乘积,然后再加入若干 \(b_0\) 中不存在于 \(\dfrac{b_1}{b_0}\) 的质因子,就可以得到所有的 \(x\)

对于前者,我们令 \(x\) 的初值为 \(\dfrac{b_1}{b_0}\),然后在 \(\operatorname{lcm}(x,b_0)<b_1\) 的情况下不断将 \(x\) 乘上 \(\dfrac{b_1}{\operatorname{lcm}(x,b_0)}\) 即可。

然后枚举 \(b_0\) 的所有因数 \(i\),如果和当前 \(x\) 没有公共质因子则说明 \(i\times x\) 是一种合法的情况,再去判断另一个条件是否合法。