edeco Temat założony przez niniejszego użytkownika |
[SPOJ] imieniny » 2016-05-17 22:53:31 Witam, na starość postanowiłem zapoznać się z programowaniem i mam za swoje... wiem regulamin zabronił pisać długie teksty, ale jakoś obecne porozumiewanie się monosylabami jakoś mnie nie przekonuje ;) ale do meritum... zapoznałem się z kursem doszedłem do pętli i pora sprawdzić teorię w praktyce... znalazłem serwisy z zadaniami i przystąpiłem do ich rozwiązywania... same problemy już na początku i dlatego zwracam się o pomoc #include <iostream> using namespace std; int d, cukierki, uczniowie, x, y; int main() { cin >> d; cout << endl; for( int i = 0; i < d; i++ ) { cin >> uczniowie; cin >> cukierki; cout << endl; x = cukierki /( uczniowie - 1 ); y = cukierki -(( uczniowie - 1 ) * x ); if( y > 0 ) { cout << "TAK"; cout << endl; } else cout << "NIE"; } return 0; }
co zrobiłem nie tak, że sędzie SPOJ nie chce mi zaliczyć tego zadania...w codeblocks działa.. czy mógłby mi ktoś wytłumaczyć co się nie podoba SPOJ-owi? z góry dziękuję za pomoc |
|
michal11 |
» 2016-05-17 23:08:40 Daj link do zadania, przenieś zmienne globalne do main i wklej co ci pisze spoj czemu nie przechodzi zadanie. |
|
edeco Temat założony przez niniejszego użytkownika |
» 2016-05-18 05:57:21 1. mam nadzieję, że o to chodziło... https://ideone.com/K5cgHr2. wstawiłem zmienne do funkcji głównej 3. SPOJ napisał mi jako rezultat "błąd wykonania (SIGFPE) |
|
mateczek |
» 2016-05-18 07:15:15 Masz przykładowe testy na początek. 5 1 1 1 0 1 10 2 9 10 1 wyjście TAK NIE TAK NIE TAK x = cukierki /( uczniowie - 1 ); y = cukierki -(( uczniowie - 1 ) * x );
y = cukierki %( uczniowie - 1 ); |
|
michal11 |
» 2016-05-18 11:40:53 Nie, chodziło mi o link do zadania na spoju a nie twój kod który już tu przecież wkleiłeś. |
|
edeco Temat założony przez niniejszego użytkownika |
» 2016-05-18 16:59:22 ups, sorry, nie zrozumiałem... (dlatego wolę budować całe zdania, bo mnie nikt później nie rozumie ;) ) oto ten link http://pl.spoj.com/problems/MWPZ06Da co do odpowiedzi kolegi mateczka... niestety ale x jest potrzebny w zadaniu, tak więc próbkowanie dla x=1 jest niezgodne, gdyż w takim przypadku wystąpi dzielenie przez 0 (zero) a to jest niedozwolone... mimo wszystko dziękuję za podpowiedź |
|
michal11 |
» 2016-05-18 17:16:50 Dla jednego ucznia masz dzielenie przez zero. Daj ifa na ilość uczniów jak jest równa 1 to zwracaj TAK i już. Możesz też zrobić z modulo, jeżeli reszta z dzielenia będzie równa zero to znaczy, że nie ma cukierków dla jasia, drobna optymalizacja. edit. #include <iostream> using namespace std;
int main() { int d, cukierki, uczniowie, x, y; cin >> d; cout << endl; for( int i = 0; i < d; i++ ) { cin >> uczniowie; cin >> cukierki; cout << endl; if( uczniowie == 1 ) { cout << "TAK"; cout << endl; continue; } x = cukierki /( uczniowie - 1 ); y = cukierki -(( uczniowie - 1 ) * x ); if( y > 0 ) { cout << "TAK"; cout << endl; } else cout << "NIE"; } return 0; }
takie coś mi zaakceptowało. |
|
mateczek |
» 2016-05-18 17:26:32 Dałem Ci dane testowe byś sprawdził algorytm. A dzielenie nodulo to tylko była sugestia by prościej liczyć resztę z dzielenia w jednej linijce (to nie była przyczyna problemu) #include <iostream> using namespace std; int main() { int liczbaTestow; cin >> liczbaTestow; while( liczbaTestow-- ) { int bachory, cuksy; cin >> bachory >> cuksy; bachory--; if( cuksy < bachory ) { cout << "TAK" << endl; continue; } if(( bachory == 0 ) &&( cuksy > 0 ) ) { cout << "TAK" << endl; continue; } if( cuksy == 0 ) { cout << "NIE" << endl; continue; } if(( cuksy % bachory ) > 0 ) cout << "TAK" << endl; else cout << "NIE" << endl; } } |
|
« 1 » 2 |