Максимальный квадрат на С
Код проходит 16 из 18 тестов. Проверял на компиляторе, вроде ошибки не заметил. В чем косяк может быть?
В массиве из N элементов (N < 20) типа unsigned long long
найти максимальный из полных квадратов и напечатать его индекс (начиная с нуля).
Если нет ни одного полного квадрата, напечатать -1.
Если максимальных более одного, напечатать индекс первого из них.
Входные данные: стандартный поток ввода, где
на первой строке записано N
на второй строке элементы массива через пробел
#include <stdio.h>
#include <math.h>
int koren(unsigned long long x) {
unsigned long long root = (unsigned long long) sqrt((long double)x);
if (root * root == x)
return (1);
else
return (0);
}
int main(){
int n = 0;
scanf("%d", &n);
unsigned long long nums[20];
int i = 0;
int nul = 0;
int ind = -1;
unsigned long long c = 0;
unsigned long long mx = 0;
for (i = 0; i < n; i++) {
scanf("%llu", &c);
nums[i] = c;
}
for (i = n-1; i > -1; i--)
{
if (koren(nums[i])==1 && nums[i]>=mx){
mx = nums[i];
ind = i;
}
}
printf("%d\n", ind);
return (0);
}