给定三个整数 p,q,b,请你计算十进制表示下的 p/q 的结果在 b 进制下是否为有限小数。
例:
输入26 12 104 3 10输出YESNO输入41 1 29 36 24 12 33 5 4输出YESYESYESNO
思路:
1. 通分c = p / q为最简形式
- 若
c = p' / q'在b进制下是有限小数,意味着bx % q == 0,即q的所有因子包含在b中
static void solve() {int T = ni();while (T-- > 0) {long p = nl(), q = nl(), b = nl();q /= gcd(p, q);long g = b;while(q != 1) {g = gcd(g, q);if(g == 1) break;while(q % g == 0) q /= g;}if(q == 1) out.println("YES");else out.println("NO");}}static long gcd(long a, long b) {return b == 0 ? a : gcd(b, a % b);}
