Witam!
Szukam chochlika, który powoduje zwracanie błędnej odpowiedzi przez spoj. Czas ok 0.4 sekundy czyli troche czasu do 1.0 s zostaje i komunikat spoj: "błedna odpowiedz"
http://pl.spoj.com/problems/PP0501A/
Funkcja decay_a(int a,int b) rozklada liczbe a na czyniki pierwsze i wpisuje kolejne wartosci do tabeli int b od najmiejszej do najwiekszej.
Wszystkie przykłady z SPOJ program zwraca z poprawnymi wynikami, wszystki losowe wartosci porownywane z stroną internetową http://www.kalkmat.pl/?cnt=NWD&m=nwd&showcalc=true&type=factor&arg1=36&arg2=48 również zwraca identycznie. Gdzieś jednak siedzi chochlik czy ktoś z Was ma jakiś pomysł gdzie może być ?
int NWD = 1; // NWD = 1 bo mnożenie przez 0 = 0
int decay_one[12] = {0,0,0,0,0,0,0,0,0,0,0,0}; // tabela rozkladu na czyniki pierwszej liczby maks 12 bo 1*10^6(maks wynika z zadania) na czyniki = 12 cyfr
int decay_two[12] = {0,0,0,0,0,0,0,0,0,0,0,0}; // tabela rozkladu na czyniki pierwszej liczby maks 12 bo 1*10^6(maks wynika z zadania) na czyniki = 12 cyfr
decay_a(one,decay_one); // wpisanie rozkladu na czyniki pierwszej liczby do tabeli pierwszej
decay_a(two,decay_two); // wpisanie rozkladu na czyniki drugiej liczby do tabeli drugiej.
for(int i=0;i<12;i++) // szukanie czesci wspolnej w tabeli decay_one i decay_two...
{
for(int b=0;b<12;b++)
{
if(decay_one[i]==0 && decay_two[b]==0)
{
break;
}
if(decay_one[i]==decay_two[b])
{
NWD *=decay_one[i]; // mnożenie przez częśc wspolna
decay_two[b] = 0; // wyzerowanie zeby nie pobierał kolejny raz tej wartosci.
break;
}
}
}
cout << NWD << endl;