Mam problem z zadaniem o trójkącie pitagorejskim - klasycznie wszelkie dokonywane przeze mnie testy zdają się wykazywać poprawność algorytmu, ale sędzia wyrzuca błędną odpowiedź
Czy ktoś mógłby pomóc?
#include
#include <math.h>
using namespace std;
void isPit(bool *tab, unsigned long long ile) //procedura określająca wszystkie możliwe całkowite przeciwprostokątne
{
for(unsigned long long i=2; i<ile; i++) //przy i=0 i i=1 nie algorytm nie działa
{
double liczba=i;
if(round(pow(liczba+liczba-1.0,0.5))==pow(liczba+liczba-1.0,0.5))
//jeżeli pierwisatek z sumy przeciwprostokątnej i dłuższej przyprostokątnej jest całkowity
{ //to te 3 liczby są trójką pitagorejską
for(unsigned long long t=liczba; t<ile; t+=liczba)
{
tab[t]=1; //więc ustawiamy wszystkie wielokrotności przeciwprostokątnej jako true
}
}
}
}
bool tablica[1000001]={};
int main()
{isPit(tablica,1000001);
unsigned long long test;
cin>>test;
for(unsigned long long t=0; t<test; t++)
{
unsigned long long liczba;
cin>>liczba;
if(tablica[liczba]==1)
cout<<"TAK"<<endl;
else cout<<"NIE"<<endl;
}
return 0;
}