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

Potrzebuje pomocy z zadaniem SPOJ PA05_POT - Czy umiesz potęgować

Object Storage Arubacloud
0 głosów
130 wizyt
pytanie zadane 15 czerwca 2019 w C i C++ przez Master3103 Początkujący (360 p.)
#include <iostream>

using namespace std;

int potega(int podstawa, int wykladnik)
{
    int wynik = 1;

    for (int i = 0; i<wykladnik; i++)
        wynik*=podstawa;

    return wynik;
}

int main()
{
    int a,b,x;
    cin >> x;
    for (int i=1; i<=x; i++)
    {
        cin >> a;
        cin >> b;
        cout << (potega(a,b))%10;
    }


    return 0;
}

Błąd: przekroczono limit czasu. Zapewne coś z pętlą.

2 odpowiedzi

0 głosów
odpowiedź 16 czerwca 2019 przez j23 Mędrzec (194,920 p.)
wybrane 16 czerwca 2019 przez Master3103
 
Najlepsza

Niedawno był podobny temat. Powiem to, co tam napisałem: potęgowanie szybkie modularne.

komentarz 16 czerwca 2019 przez Master3103 Początkujący (360 p.)
Dzięki za radę poczytam o tym i spróbuję to zaimplementować.
komentarz 16 czerwca 2019 przez adrian17 Ekspert (344,860 p.)
Na to zadanie są nawet prostsze sposoby ;)
komentarz 16 czerwca 2019 przez Master3103 Początkujący (360 p.)
Dzięki udało się, w tym zadaniu nie chodziło w sumie o potęgowanie. Dziękuje!
0 głosów
odpowiedź 15 czerwca 2019 przez adrian17 Ekspert (344,860 p.)
Pomnożenie liczby przez siebie miliard razy z natury nie wykona się zbyt szybko.

W zadaniu chodzi o wyznaczenie tylko ostatniej cyfry. Rekomenduję zastanowić się przy tym z kartką i długopisem - to jest bardziej temat matematyczny niż kodowanie.
komentarz 16 czerwca 2019 przez Master3103 Początkujący (360 p.)
#include <iostream>
#include <cmath>

using namespace std;

long double x, a, b, y;

int main()
{
    cin >> x;
    for (int i=1; i<=x; i++)
    {
        cin >> a >> b;
        cout << pow(a,b);
    }
    return 0;
}

Zmieniłem nieco kod ale nie wiem jak teraz wyciągnąć ostatnią liczbę z long double (pow(a,b)).

 

komentarz 16 czerwca 2019 przez adrian17 Ekspert (344,860 p.)
Wyciąganie ostatniej cyfry z liczby całkowitej jest bardzo proste, to po prostu reszta z dzielenia przez 10.

Natomiast to wciąż nie zadziała. Miliard do potęgi miliardowej nie zmieścisz w żadnej wbudowanej zmiennej C++owej.
komentarz 16 czerwca 2019 przez Master3103 Początkujący (360 p.)
Dzięki już udało mi się to zadanie!

Podobne pytania

0 głosów
2 odpowiedzi 369 wizyt
+1 głos
1 odpowiedź 1,983 wizyt
+1 głos
2 odpowiedzi 1,058 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

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

...