Main2 - zadanie Krokodyle
Ostatnio zmodyfikowano 2019-08-03 22:09
trew Temat założony przez niniejszego użytkownika |
Main2 - zadanie Krokodyle » 2019-08-01 22:42:34 Witam, rozwiązuję zadanie "Krokodyle" z kursu na main2: https://main2.edu.pl/c/konkurs-podstaw-algorytmiki/p/kro/Napisałem kod: #include <bits/stdc++.h>
using namespace std;
int przeszkoda( int a, int b ) { if( b == 1 ) return a + 1; return przeszkoda( a,( b - 1 ) % 10000 ) *( a + 1 ) % 10000; }
int main() { ios_base::sync_with_stdio( NULL ); cin.tie( NULL ); int P, a, b; cin >> P; for( int i = 0; i < P; i++ ) { cin >> a >> b; cout << przeszkoda( a, b ) << "\n"; } return 0; }
Program działa, ale tylko dla części danych; przy dużych wartościach b sprawdzarka wypisuje błąd: 1b process exited due to signal 7. Dlaczego się tak dzieje? Czy może to być jakiś problem z pamięcią? A może chodzi o dużą liczbę wywołań funkcji przeszkoda()? |
|
pekfos |
» 2019-08-02 16:36:34 Po co tu w ogóle jest rekurencja? |
|
trew Temat założony przez niniejszego użytkownika |
» 2019-08-02 19:32:13 Istotnie łatwiej byłoby zrobić to pętlą, ale zadanie jest załączone do lekcji o rekurencji, dlatego rozważam jak można je tym sposobem rozwiązać. Bardziej niż rozwiązanie interesuje mnie przyczyna pojawiania się błędu w tym programie. |
|
pekfos |
» 2019-08-03 10:52:41 Przepełnienie stosu. Uruchom program z danymi 1 1 10001. |
|
trew Temat założony przez niniejszego użytkownika |
» 2019-08-03 22:09:10 Faktycznie o to chodzi. Dziękuję bardzo za odpowiedź. |
|
« 1 » |