4436: Easy Math
Time Limit: 20 Sec
Memory Limit: 256 MB
题目连接
http://acm.scu.edu.cn/soj/problem.action?id=4436
Description
Given n integers a1,a2,…,an, check if the sum of their square root a1+a2+…+an is a integer.
Input
The input consists of multiple tests. For each test:
The first line contains 1 integer n (1≤n≤105). The second line contains n integers a1,a2,…,an (0≤ai≤109).
The first line contains 1 integer n (1≤n≤105). The second line contains n integers a1,a2,…,an (0≤ai≤109).
Output
For each test, write "Yes" if the sum is a integer, or "No" otherwise.
Sample Input
2
1 4
2
2 3
Sample Output
Yes
No
HINT
题意
让你判断给你的n个数的根号和是否为整数
题解:
(ll)sum==sum就好了
代码:
#include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define test freopen("test.txt","r",stdin) #define maxn 100001 #define mod 10007 #define eps 1e-9 const int inf=0x3f3f3f3f; const ll infll = 0x3f3f3f3f3f3f3f3fLL; inline ll read() { ll 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; } //************************************************************************************** int main() { int n; while(cin>>n) { double sum=0; double x; for(int i=0;i<n;i++) { scanf("%lf",&x); sum+=sqrt(x); } if((ll)sum==sum) cout<<"Yes"<<endl; else cout<<"No"<<endl; } }