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

Zadanie SPOJ- Dwie cyfry silni. Jeśli chcesz robić to zadanie nie wchodź

+1 głos
838 wizyt
pytanie zadane 14 lipca 2017 w C i C++ przez pikondziu_24 Nowicjusz (160 p.)

Witam,

wyskakuje mi błąd mimo, że program działa prawidłowo. Wcześniej miałem przekroczony limit czasu ale zorientowałem, że nie ma sensu liczyć silni dla n>10 i dodałem odpowiedni warunek jednak teraz wyskakuje błąd. 

Co może być nie tak? 

#include <iostream>
#include <cstdlib>

using namespace std;

int ile, n;

int main()
{
    cin>>ile;
    if((ile<=0)||(ile>30)) cout<<"Zle"<<endl;
    for(int i=0;i<ile;i++)
    {
        cin>>n;
        if(n<0) cout<<"Zle"<<endl;
        else if(n>=10) cout<<0<<" "<<0<<endl;
        else
        {
        for(int j=n-1; j>1; j--)
        {
            n*=j;
        }
        cout<<(n%100)/10<<" "<<n%10<<endl;
        }
    }
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 14 lipca 2017 przez Bosswell Nałogowiec (36,490 p.)
wybrane 14 lipca 2017 przez pikondziu_24
 
Najlepsza

1. 

if((ile<=0)||(ile>30)) cout<<"Zle"<<endl;

 

if(n<0) cout<<"Zle"<<endl;

Te warunki są dla Ciebie. Nie musisz ich umieszczać w kodzie.

2. Sprawdź w twoim programie, czy za każdym razem dobrze liczysz silnie od 0 do 9 ;) Tyle Ci wystarczy.

1
komentarz 14 lipca 2017 przez pikondziu_24 Nowicjusz (160 p.)
Dzięki za tip z warunkami. Źle mi liczyło dla 0 faktycznie poprawiłem i zaakceptowało dzięki wielkie :D
komentarz 14 lipca 2017 przez Jakub 0 Pasjonat (23,120 p.)

Hej ,mam podobny problem do tego . Nie tworzę nowego pytania bo ty takie już zadałeś  .

Czy może orientujecie się co ja zrobiłem źle ... program mi się kompiluje ale sędzia na SPOJ pisze że to jest zła odpowiedź, będę wdzięczny za wszelką pomoc :)

#include <iostream>

using namespace std;

int main()
{
    long long int d, n;
    cin>>d; //ilosc testow

    for(int i=1; i<=d; i++)
    {
        cin>>n; //pobieramy liczbe

        if(n>=10)cout<<0<<" "<<0<<endl; //jezeli liczba jest wieksza od 9 to i tak jednostki i dziesiatki beda zerami
        else if(n==0)cout<<0<<" "<<0<<endl; //tu tak samo

        else //obliczmy silnie w przeciwnym wypadku
        {
            long long int dn=n;

            for(int j=n-1; j>=1; j--)
            {
                dn*=j;
            }

            cout<<(dn/10)%10<<" "<<dn%10<<endl; //pokazujemy najpierw dziesiatki a potem jednstki
        }
    }

    return 0;
}

Zależało mi żeby napisać swój własny kod ,porównuje z wcześniejszym i nie wiem co jest źle

 

1
komentarz 14 lipca 2017 przez Bosswell Nałogowiec (36,490 p.)

Zastanów się nad tą linią kodu 

else if(n==0)cout<<0<<" "<<0<<endl; //tu tak samo

 

komentarz 14 lipca 2017 przez Jakub 0 Pasjonat (23,120 p.)

dzięki yes . Wreszcie mi zaakceptowało ,zmieniłem na :

else if(n==0)cout<<0<<" "<<1<<endl; 

i jest OK ,nie miałem pojęcia że 0! to jeden ,przyznam że zadania ze SPOJ są trudne ...

 

1
komentarz 14 lipca 2017 przez Bosswell Nałogowiec (36,490 p.)

Podobne pytania

0 głosów
1 odpowiedź 869 wizyt
pytanie zadane 30 lipca 2017 w C i C++ przez Michał_Warmuz Mądrala (5,830 p.)
0 głosów
1 odpowiedź 1,149 wizyt
pytanie zadane 19 czerwca 2017 w SPOJ przez iWantCode Bywalec (2,170 p.)
0 głosów
2 odpowiedzi 818 wizyt

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,324 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.

...