Skip to content

128 周赛

本周做了个寂寞,第二题一直超时超时……,虽然看 AC数量是第三题的更多,但最终还是没去做第三题……

看完别人的答案,发现原来这题可以这么简单,这让我想起来当初的数学,记得有一类化简题还是计算题,直接做很难,但如果将某个数写成除以 1,也就是拆分成分数的形式,就很简单了。这道题就是这样。一个数乘以 k 的同时,另一个数要乘以 k^2,于是我就在想每次选取时,谁乘 k,谁乘 k^2,但实际上反过来推,直接让 a * b 就可以得到最终一定是 k^3 次方。如果

py
t = int(input())
for _ in range(t):
    a,b = map(int, input().split())
    prod = a * b
    prod_3 = int(prod ** (1/3))
    if (prod_3+1) ** 3 == prod:
        prod_3 = prod_3 + 1
    elif (prod_3-1) ** 3 == prod:
        prod_3 = prod_3 - 1
    if prod_3 ** 3 != prod:
        print("No")
    elif a % prod_3 != 0 or b % prod_3 != 0:
        print("No")
    else:
        print("Yes")