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

SPOJ - Czy umiesz potęgować?

Object Storage Arubacloud
0 głosów
345 wizyt
pytanie zadane 18 sierpnia 2018 w SPOJ przez Nowacx02 Obywatel (1,060 p.)
zmienione kategorie 18 sierpnia 2018 przez Nowacx02

Witam ma ktoś pomysł dlaczego SPOJ nie przyjmuje mi kodu i wyświetla "Błędna odpowiedź"

Oto treść zadania:

Dla danych dwóch liczb naturalnych a i b, wyznaczyć ostatnią cyfrę liczby ab.

Zadanie
Napisz program, który:

  • wczyta ze standardowego wejścia: podstawę a oraz wykładnik b,
  • wyznaczy ostatnią cyfrę liczby ab,
  • wypisze wynik na standardowe wyjście.

Wejście
W pierwszej linii wejścia znajduje się jedna liczba całkowia D (1≤D≤10), oznaczjąca liczbę przypadków do rozważenia. Opis każdego przypadku podany jest w jednym wierszu, zawierającym dwie liczby naturalne a i b oddzielone pojedynczym odstępem (spacją), takie, że (1 ≤ a,b ≤ 1 000 000 000).

Wyjście
Dla każdego przypadku z wejścia Twój program powinien wypisać (w osobnej linii dla każdego przypadku z wejścia) cyfrę jedności liczby abzapisanej dziesiętnie.

Przykład
Dla danych wejściowych:

2
2 3
3 3

poprawną odpowiedzią jest:

8
7

 

A to mój kod:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    int n;
    cin>>n;

    for(int i=0; i<n; i++)
    {
        long long a,b,c=0;
        string napis;
        cin>>a>>b;
        if (a==0||b==0)
        {
            cout<<1<<endl;
            continue;
        }
        if (a==1)
        {
            cout<<b%10<<endl;
            continue;
        }
        if (a>10)
            a%=10;

        switch (a)
        {
        case 1:
            cout<<1<<endl;                            
            break;
        case 2:
            b%=4;
                switch(b)
                {
                case 0: cout<<6<<endl; break;
                case 1: cout<<2<<endl; break;
                case 2: cout<<4<<endl; break;
                case 3: cout<<8<<endl; break;
                }
            break;
        case 3:
            b%=4;
                switch(b)
                {
                case 0: cout<<1<<endl; break;
                case 1: cout<<3<<endl; break;
                case 2: cout<<9<<endl; break;
                case 3: cout<<7<<endl; break;
                }
            break;
        case 4:
            b%=2;
                switch(b)
                {
                case 0: cout<<6<<endl; break;
                case 1: cout<<4<<endl; break;
                }
            break;
        case 5:
                cout<<5<<endl;
            break;
        case 6:
                cout<<6<<endl;
            break;
        case 7:
              b%=4;
                switch(b)
                {
                case 0: cout<<1<<endl; break;
                case 1: cout<<7<<endl; break;
                case 2: cout<<9<<endl; break;
                case 3: cout<<3<<endl; break;
                }
            break;
        case 8:
            b%=4;
                switch(b)
                {
                case 0: cout<<6<<endl; break;
                case 1: cout<<8<<endl; break;
                case 2: cout<<4<<endl; break;
                case 3: cout<<2<<endl; break;
                }
            break;
        case 9:
            b%=2;
                switch(b)
                {
                case 0: cout<<1<<endl; break;
                case 1: cout<<9<<endl; break;
                }
            break;
       case 0:
                cout<<0<<endl;
            break;
        }

    }

    return 0;
}

 

komentarz 18 sierpnia 2018 przez Mariusz08 Maniak (62,300 p.)
Przenieś pytanie do kategorii SPOJ

1 odpowiedź

+1 głos
odpowiedź 18 sierpnia 2018 przez niezalogowany
wybrane 18 sierpnia 2018 przez Nowacx02
 
Najlepsza

Dwa case masz błędne:

  1. Dla a = 1 wynik powinien wynosić 1: 
    case 1:
    	cout << 1 << endl;
    	break;
    
  2. Sytuacja gdy a = 10 nie ma miejsca, bo np. 10 % 10 daje 0:

    case 0:
    	cout << 0 << endl;
    	break;

    Teraz wszystko powinno działać. Kod mógłbyś znacznie skrócić używając tablicy. PS. Zamiast kopiować całą treść zadania lepiej podać link ;)

komentarz 18 sierpnia 2018 przez Nowacx02 Obywatel (1,060 p.)

Poprawiłem, ale nadal wyrzuca "Błędna odpowiedź"


#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    int n;
    cin>>n;

    for(int i=0; i<n; i++)
    {
        long long a,b;
        string napis;
        cin>>a>>b;
        if (a==0||b==0)
        {
            cout<<1<<endl;
            continue;
        }
        if (a==1)
        {
            cout<<b%10<<endl;
            continue;
        }
        if (a>=10)
            a%=10;

        switch (a)
        {
        case 1:
            cout<<1<<endl;
            break;
        case 2:
            b%=4;
                switch(b)
                {
                case 0: cout<<6<<endl; break;
                case 1: cout<<2<<endl; break;
                case 2: cout<<4<<endl; break;
                case 3: cout<<8<<endl; break;
                }
            break;
        case 3:
            b%=4;
                switch(b)
                {
                case 0: cout<<1<<endl; break;
                case 1: cout<<3<<endl; break;
                case 2: cout<<9<<endl; break;
                case 3: cout<<7<<endl; break;
                }
            break;
        case 4:
            b%=2;
                switch(b)
                {
                case 0: cout<<6<<endl; break;
                case 1: cout<<4<<endl; break;
                }
            break;
        case 5:
                cout<<5<<endl;
            break;
        case 6:
                cout<<6<<endl;
            break;
        case 7:
              b%=4;
                switch(b)
                {
                case 0: cout<<1<<endl; break;
                case 1: cout<<7<<endl; break;
                case 2: cout<<9<<endl; break;
                case 3: cout<<3<<endl; break;
                }
            break;
        case 8:
            b%=4;
                switch(b)
                {
                case 0: cout<<6<<endl; break;
                case 1: cout<<8<<endl; break;
                case 2: cout<<4<<endl; break;
                case 3: cout<<2<<endl; break;
                }
            break;
        case 9:
            b%=2;
                switch(b)
                {
                case 0: cout<<1<<endl; break;
                case 1: cout<<9<<endl; break;
                }
            break;
       case 0:
                cout<<0<<endl;
            break;
        }

    }

    return 0;
}

 

komentarz 18 sierpnia 2018 przez niezalogowany

Usuń tę instrukcję:

if (a == 1)
{
	cout << b % 10 << endl;
	continue;
}
komentarz 18 sierpnia 2018 przez niezalogowany

Jeszcze jedno w zdaniu a, b > 0, ale gdybyś chciał uwzględnić z zerami to musiałbyś zrobić 3 warunki dla:

  1. 0^0 - symbol nieoznaczony, lub 1
  2. a != 0, a^0 = 1
  3. b != 0, 0^b = 0
komentarz 18 sierpnia 2018 przez Nowacx02 Obywatel (1,060 p.)
Dzięki teraz działa masz naj :)

Podobne pytania

+1 głos
1 odpowiedź 1,975 wizyt
0 głosów
3 odpowiedzi 372 wizyt
pytanie zadane 24 lutego 2017 w SPOJ przez Mateusz K Nowicjusz (150 p.)
0 głosów
2 odpowiedzi 318 wizyt
pytanie zadane 7 lutego 2023 w SPOJ przez Tactykalier Nowicjusz (200 p.)

92,565 zapytań

141,416 odpowiedzi

319,599 komentarzy

61,950 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...