题目链接
题意:给定一个序列,是否存在若干个数,它们的乘积不是完全平方数。
思路:显然有
a
2
∗
b
2
∗
.
.
.
=
(
a
∗
b
∗
.
.
.
)
2
a^2*b^2*...=(a*b*...)^2
a2∗b2∗...=(a∗b∗...)2,所以只要有一个数不是完全平方数即可。
AC代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
inline int read() {
int x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
/***************main****************/
ll T = 1;
ll m, n;
ll a[111];
int main() {
T = read();
while (T--) {
n = read();
int f = 0;
rep(i, 0, n) a[i] = read();
rep(i, 0, n) {
ll x = sqrt(a[i]);
if (x * x != a[i]) f = 1;
}
if (f)
cout << "YES\n";
else
cout << "NO\n";
}
return 0;
}