Codeforces 834C(找规律)

Codeforces 834C
观察发现如果一个人的得分是$a^2b^2cd^2=A$,另一个人得分是$abc^2d=B$,那么$AB=a^3b^3c^3d^3=(abcd)^3$,那么我们只需要判断$AB$是否能够化成$x^3$的形式
用cmath中的pow函数,已知$x^3=x^{\frac13}$,所以求得后可能值小了,加到$x^3>AB$后,判断$x^3$是否等于$AB$,并且$A \% x = 0, B \% x = 0$

Codeforces Submission

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ms(i, j) memset(i, j, sizeof i)
#define LL long long
#define db double
using namespace std;
LL a, b, n;
void clean() {
}
void solve() {
clean();
scanf("%I64d%I64d", &a, &b);
if (a < b) swap(a, b);
n = a * b;
LL endd = pow(n, 1.0 / 3.0);
while (endd * endd * endd < n) endd++;
if (endd * endd * endd == n && a % endd == 0 && b % endd == 0) {
printf("YES\n");
return ;
}
printf("NO\n");
}
int main() {
int T; scanf("%d", &T);
while (T--) solve();
return 0;
}

------ 本文结束 ------