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

Czy umiesz potęgować C++

VPS Starter Arubacloud
0 głosów
358 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,300 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,100 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,918 wizyt
0 głosów
1 odpowiedź 511 wizyt
0 głosów
0 odpowiedzi 394 wizyt
pytanie zadane 28 października 2021 w C i C++ przez DrTomas Nowicjusz (140 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...