A. Perfectly Imperfect Array

原题链接
https://codeforces.ml/contest/1514/problem/A

Given an array a of length n, tell us whether it has a non-empty subsequence such that the product of its elements is not a perfect square.
A sequence b is a subsequence of an array a if b can be obtained from a by deleting some (possibly zero) elements.

Input
The first line contains an integer t (1≤t≤100) — the number of test cases. The description of the test cases follows.
The first line of each test case contains an integer n (1≤n≤100) — the length of the array a.
The second line of each test case contains n integers a1, a2, …, an (1≤ai≤10^4) — the elements of the array a.

Output
If there's a subsequence of a whose product isn't a perfect square, print "YES". Otherwise, print "NO".

Example
input
2
3
1 5 4
2
100 10000
output
YES
NO

Note
In the first example, the product of the whole array (20) isn't a perfect square.
In the second example, all subsequences have a perfect square product.

题意
给定一个长度为n的序列,如果其中每一个子序列的乘积不是平方数就输出yes,如果所有子序列乘积都是平方数就输出no
思路
不难发现,由于a^2 * b^2 = (a * b)^2,所以只要其中某一个数不能开平方,就不能化为这种形式,即不满足条件。
代码

#include <iostream>
#include <cmath>

using namespace std;

const int N = 110;

int a[N];

int main()
{
    int t;
    cin >> t;
    while (t -- )
    {
        int n;
        cin >> n;
        for (int i = 0; i < n; i ++ ) cin >> a[i];
        
        bool f = true;
        for (int i = 0; i < n; i ++ )
        {
            if ((int)sqrt(a[i]) * (int)sqrt(a[i]) != a[i])  // 注意要强转int
            {
                cout << "YES" << endl;
                f = false;
                break;
            }
        }
        
        if (f) cout << "NO" << endl;
    }
    
    return 0;
}
posted on 2021-04-20 16:13  Laurance  阅读(135)  评论(0)    收藏  举报