一个简单的想法就是枚举 \(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\) 是一种合法的情况,再去判断另一个条件是否合法。
标签:dfrac,因子,枚举,lcm,NOIP2009TG,P1072,Hankson From: https://www.cnblogs.com/aimoai/p/18451734