Perfect Squares
Given an array a1, a2, ..., an of n integers, find the largest number in the array that is not a perfect square.
A number x is said to be a perfect square if there exists an integer y such that x = y2.
The first line contains a single integer n (1 ≤ n ≤ 1000) — the number of elements in the array.
The second line contains n integers a1, a2, ..., an ( - 106 ≤ ai ≤ 106) — the elements of the array.
It is guaranteed that at least one element of the array is not a perfect square.
Print the largest number in the array which is not a perfect square. It is guaranteed that an answer always exists.
2 4 2
2
8 1 2 4 8 16 32 64 576
32
In the first sample case, 4 is a perfect square, so the largest number in the array that is not a perfect square is 2.
coed:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#define INF 0x3f3f3f3f
using namespace std;
int main(){
int n;
int a[1010];
scanf("%d",&n);
int i;
for(i = 0; i < n; i++){
scanf("%d",&a[i]);
}
int ans = -INF;
for(i = 0; i < n; i++){
int tmp = (int)sqrt((double)a[i]);
if(a[i]<0||tmp*tmp!=a[i]){
ans = max(ans,a[i]);
}
}
printf("%d\n",ans);
return 0;
}