Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SPOJ] imieniny

Ostatnio zmodyfikowano 2016-05-19 02:57
Autor Wiadomość
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
C/C++
#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
P-148354
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.
P-148355
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/K5cgHr
2. wstawiłem zmienne do funkcji głównej
3. SPOJ napisał mi jako rezultat "błąd wykonania (SIGFPE)
P-148359
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

C/C++
x = cukierki /( uczniowie - 1 );
y = cukierki -(( uczniowie - 1 ) * x );

//resztę z dzielenia cukierki/uczniowie możesz policzyć przy pomocy operatora %modulo
y = cukierki %( uczniowie - 1 );
P-148360
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ś.
P-148363
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​/MWPZ06D


a 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ź
P-148376
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.
C/C++
#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.
P-148377
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)
C/C++
#include <iostream>
using namespace std;
int main()
{
    int liczbaTestow;
    cin >> liczbaTestow;
    while( liczbaTestow-- ) {
        int bachory, cuksy;
        cin >> bachory >> cuksy;
        bachory--; //odejmuje jasia od dzieciaków
        if( cuksy < bachory ) { cout << "TAK" << endl; continue; } // mniej cukierków niż dzieci prosta sprawa
        if(( bachory == 0 ) &&( cuksy > 0 ) ) { cout << "TAK" << endl; continue; } // klasa jasia liczy zero osób
        if( cuksy == 0 ) { cout << "NIE" << endl; continue; } // jasio nie ma cukierków
        if(( cuksy % bachory ) > 0 ) cout << "TAK" << endl; //dzielenie modulo - reszta z dzielenie
        else cout << "NIE" << endl;
       
    }
   
   
}
P-148378
« 1 » 2
  Strona 1 z 2 Następna strona