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

Czy umiesz potęgować C++

Object Storage Arubacloud
0 głosów
371 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,360 p.)
Polecam zrobić to zadanie bez tablicy ;)

3 odpowiedzi

+1 głos
odpowiedź 11 marca 2020 przez jankustosz1 Nałogowiec (35,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 (35,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 Ekspert (344,860 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ź 1,989 wizyt
0 głosów
1 odpowiedź 519 wizyt
0 głosów
0 odpowiedzi 416 wizyt
pytanie zadane 28 października 2021 w C i C++ przez DrTomas Nowicjusz (140 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

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

...