【SCU4436】【数学归纳】【二分】Easy Math题解

来源:互联网 发布:linux 窗口编程 编辑:程序博客网 时间:2024/06/05 09:38

Easy Math

Given nn integers a1,a2,…,ana1,a2,…,an, check if the sum of their square root a1−−√+a2−−√+⋯+an−−√a1+a2+⋯+an is a integer.

Input

The input consists of multiple tests. For each test:

The first line contains 11 integer nn (1≤n≤1051≤n≤105). The second line contains nn integers a1,a2,…,ana1,a2,…,an (0≤ai≤1090≤ai≤109).

Output

For each test, write “Yes” if the sum is a integer, or “No” otherwise.

Sample Input

21 422 3

Sample Output

YesNo

水题啊,直接判或者二分

#include<stdio.h>#include<math.h>int a[131072];int main(){    int n;    while(scanf("%d",&n)>0)    {        int r=1;        for(int i=0;i<n;i++)        {            scanf("%d",&a[i]);            int m=(int)sqrt(1.0*a[i]+0.5)+1;            while(r)            {                if((long long)m*m==a[i])                {                    break;                }                if((long long)m*m<a[i])                {                    r=0;                }                m--;            }        }        if(r)        {            printf("Yes\n");        }        else        {            printf("No\n");        }    }    return 0;}
0 0