1 / 6
Jan 2017

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ź :confused: 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;
    }
  • created

    Jan '17
  • last reply

    Apr '21
  • 5

    replies

  • 843

    views

  • 4

    users

In [7]: 8*8+15*15
Out[7]: 289

In [8]: 17*17
Out[8]: 289

2 months later

Bardzo dziękuję za odpowiedź :smile:
Trochę zajęło mi ponowne zabranie się za zadanie, ale po krótkim researchu napisałem coś takiego:

AC
Znowu nie wiem czemu wyrzuca mi złą odpowiedź, bardzo proszę o pomoc

4 years later

Mogę prosić jakąś podpowiedź ? Moje pomysły albo za wolne, albo nie obejmują wszystkich przypadków…