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

Ostatnia liczba potegi SPOJ pomocy!

Object Storage Arubacloud
0 głosów
217 wizyt
pytanie zadane 18 lipca 2018 w SPOJ przez Bloom55 Użytkownik (660 p.)

Tutaj jest moj kod, moim zdaniem, jest on poprawny. Dziala nawet dla duzych liczb. Jednak spoj pokazuje mi blad wykonania. Czy ktos moglby pomoc? Gdzie nie dostrzegam mojego błędu? Z góry dziękuje. 

#include <iostream>

using namespace std;
long long potega(long a, long b)
{
    if(b==0) return 1;
    else return potega(a, b-1)*a;
}

int main()
{
    int il_t;
    cin>>il_t;
    for(int i=0; i<il_t; i++)
   {
    long long  a, b;
    int pom;
    cin>>a>>b;
    pom=b%4;
    if(pom==0)
    {
        cout<<potega(a,4)%10<<endl;
    }
    else if(pom==1)
    {
        cout<<potega(a,1)%10<<endl;
    }
    else if(pom==2)
    {
        cout<<potega(a,2)%10<<endl;
    }
    else if(pom==3)
    {
        cout<<potega(a,3)%10<<endl;
    }
   }

    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 18 lipca 2018 przez profesorek96 Szeryf (91,420 p.)
Widzę że umiesz pisać algorytm potęgowania. Jednak to zadanie jest mega proste i nie na tym polega. Weź kartkę i rozpisz sobie liczby po kolei i zobacz czy jest może jakaś reguła. Jak odgadniesz tą regułę to będziesz się mega śmiał ;)
komentarz 18 lipca 2018 przez Bloom55 Użytkownik (660 p.)
No ja wiem, nie chodzi o to co jest na dole? Przecież funkcja na gorze to nie caly program.
0 głosów
odpowiedź 18 lipca 2018 przez Bondrusiek Maniak (61,370 p.)

Witam,

zapewne problemem u Ciebie jest długość obliczeń. Komputery mimo dużej mocy obliczeniowej do przetwarzanie wielkich danych potrzebują określonej długości czasu. To może się nie podobać SPOJ'owi i nie zaakceptuje rozwiązania. Rozwiązując to zadanie polecam pójść drogą pośrednią tzn zauważyć pewne zależności dla ostatnich liczb a nie surowo liczyć wielkie potęgi. Np

dla 1 
Ostatnia liczba będzie 1
1^1 = 1 1^2 = 1 1^3 = 1
dla 5
Ostatnia liczba będzie 5
5^1 = 5 5^2 = 25 5^3 = 125
dla 6
Ostatnia liczba będzie 6
6^1 = 6 6^2 = 36 6^3 = 216

Dla innych liczb też można zauważyć pewne prawidłowości.

komentarz 18 lipca 2018 przez Bloom55 Użytkownik (660 p.)
Rzeczywiście, spróbuje. Jednak dziwi mnie to lekko, bo w zamysle przecież ten program omija duże liczby, przeciez liczba trzy cyfrowa to pikus dla kompa ;)

Podobne pytania

0 głosów
0 odpowiedzi 285 wizyt
0 głosów
1 odpowiedź 1,008 wizyt
pytanie zadane 17 lipca 2017 w SPOJ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
1 odpowiedź 202 wizyt
pytanie zadane 1 września 2020 w C i C++ przez magda_19 Gaduła (3,080 p.)

92,551 zapytań

141,400 odpowiedzi

319,531 komentarzy

61,938 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!

...