• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SPOJ przedszkolanka - po raz kolejny

Mały hosting, OGROMNE możliwości
0 głosów
605 wizyt
pytanie zadane 22 lutego 2017 w SPOJ przez maria_d Nowicjusz (170 p.)
zmienione kategorie 22 lutego 2017 przez Patrycjerz

Przejrzałam chyba wszystkie wątki na temat tego zadania. Rozwiązałam zadanie w najprostszy wg mnie sposób (bez NWW i NWD). Sprawdziłam wyniki dla różnych danych, za każdym razem zwracane są prawidłowe.

Wiem, że można to zadanie rozwiązać za pomocą NWW, ale chcę znaleźć błąd w programie, który ja stworzyłam.

Dlaczego ten kod nie jest zaliczony przez sędziego w SPOJ?

int main()
{
    int n,a,b,c;
    cin>>n;
    for(int i=1; i<=n;i++)
    {
    cin>>a>>b;
    int  k=1;
        if(a>b)
        {
            if(a%b==0)
                cout<<a<<endl;
            if(a%b!=0)
            {
                while(c%b!=0)
                {
                k++;
                c=a*k;
                }
                cout<<c<<endl;
            }
        }
        if(b>a)
        {
            if(b%a==0)
            cout<<b<<endl;
            if(b%a!=0)
            {
                while(c%a!=0)
                {
                k++;
                c=b*k;
                }
                cout<<c<<endl;
            }
        }
        if(a==b)
            cout<<a<<endl;
    }
    return 0;
}
komentarz 22 lutego 2017 przez manjaro Nałogowiec (37,420 p.)
komentarz 22 lutego 2017 przez maria_d Nowicjusz (170 p.)
komentarz 22 lutego 2017 przez vector Dyskutant (9,200 p.)

Jeżeli nie umiesz debugować własnych programów ze spoja to wiedz że coś sie dzieje ;>

while(c % b != 0) {
  // ...
}

while(c % a != 0) {
  // ...
}

A definujesz zmienną c dopiero wewnątrz  tych pętli więc kiedy robisz pierwsze sprawdzanie warunku pętli to w c są jakieś śmieci.

 

Tak na offtopie to patrząc na ten kod:

cin >> a >> b;
if(a > b) {
    // ...
}
if(b > a) {
    // ...
}
if(a == b) {
    // ...
}

Dlaczego nie zrobisz tak ?

cin >> a >> b;

if(b > a) {
    swap(a, b);
}

if(a == b) {
    // ...
} else {
    // ...
}

Skróciłbyś swój kod o 1/4 a program by robił dokładnie to samo.

komentarz 22 lutego 2017 przez maria_d Nowicjusz (170 p.)
Dziękuję za pomoc. Z "while" zrobiłam "do...while" i c zostało zdefiniowane zanim trafiło do pętli. Zadanie przyjęte przez sędziego :)
komentarz 22 lutego 2017 przez vector Dyskutant (9,200 p.)

Przepraszam za formy osobowe jak do mężczyzny. Z przezwyczajenia już tak napisałem.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 688 wizyt
pytanie zadane 11 sierpnia 2017 w C i C++ przez sohu Nowicjusz (200 p.)
0 głosów
3 odpowiedzi 1,313 wizyt
pytanie zadane 13 lipca 2016 w C i C++ przez Maciej Relidziński Nowicjusz (200 p.)
0 głosów
1 odpowiedź 777 wizyt
pytanie zadane 9 kwietnia 2021 w SPOJ przez tenikoo Nowicjusz (140 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,262 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...