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

Czy umiesz potęgować C++

42 Warsaw Coding Academy
0 głosów
615 wizyt
pytanie zadane 11 marca 2020 w SPOJ przez Sashimo Użytkownik (740 p.)

Chodzi o to zadanie
https://pl.spoj.com/problems/PA05_POT/

 

a to mój kod :

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int tb[10];
    int a,b,x,t;

    cin>>t;


    for (int i=0; i<t; i++)
    {
       cin>>a>>b;
       x=pow(a,b);
       tb[i]=x;
    }

    for (int j=0; j<t; j++)
    {


        cout<<tb[j]%10<<endl;


    }

    return 0;
}

nie rozumiem czemu działa źle

potęguje dobrze i w kolejności i daje taki sam wynik jak w zadaniu, chyba że ja źle rozumiem zadanie i nie o to chodzi

komentarz 11 marca 2020 przez Great Stary wyjadacz (12,660 p.)
Polecam zrobić to zadanie bez tablicy ;)

3 odpowiedzi

+1 głos
odpowiedź 11 marca 2020 przez jankustosz1 Nałogowiec (36,880 p.)
wybrane 11 marca 2020 przez Sashimo
 
Najlepsza
Int ma zakres do 10^9, Long long do 10^18. Zobacz jaki wynik może być. Maksymalny wynik może być (10^9)^(10^9), pewnie się nie zmieści.

Zauważ, że ostatnia cyfra po kilku wymnożeniach zacznie się powtarzać i cyklić, maksymalnie dziewięć mnożeń będzie trzeba wykonać, aby wróciło do pozycji początkowej, bo tyle mamy tylko cyfr(oprócz zera)

Innym sposobem może być wykonanie szybkiego potęgowania. Poczytaj o tym w googlu, ale chyba pierwszy sposób będzie dla Ciebie prostszy.
komentarz 11 marca 2020 przez jankustosz1 Nałogowiec (36,880 p.)
Jak pisałem nie widziałem jeszcze wcześniejszego komentarza.
komentarz 11 marca 2020 przez Sashimo Użytkownik (740 p.)
dzięki wielkie teraz rozumiem co było nie tak
+1 głos
odpowiedź 11 marca 2020 przez adrian17 Mentor (353,220 p.)

Podpowiedź:

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)

Sprawdź co się stanie, jak wpiszesz a i b rzędu setek milionów.

komentarz 11 marca 2020 przez Sashimo Użytkownik (740 p.)
no program pokazuje liczbę ujemną więc jest błąd tylko że co ja w takiej sytuacji mam zrobić ?

 

PS: jest to moje 3 zadanie po przejściu kursu :)
0 głosów
odpowiedź 12 marca 2020 przez Szymczak_7 Obywatel (1,860 p.)
Wynik musisz chyba podać w tej pętli: for (int i=0; i<t; i++).

Podobne pytania

+1 głos
1 odpowiedź 2,463 wizyt
0 głosów
1 odpowiedź 616 wizyt
0 głosów
0 odpowiedzi 664 wizyt
pytanie zadane 28 października 2021 w C i C++ przez DrTomas Nowicjusz (140 p.)

93,380 zapytań

142,380 odpowiedzi

322,535 komentarzy

62,737 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...