Drodzy forumowicze,
jak pewnie wielu z was zaczynam programować, zadań szukam na SPOJu. Tam znalazłem zadanie, w którym program ma wyświetlić cyfrę jedności z potęgi. Podajemy a i b i otrzymujemy liczbę a^b, i to właśnie tej liczby ostatnią cyfrę mamy otrzymać. Niby proste zadanie ()nawet dla laika jak ja) ale mam problem i nie rozumiem czemu dla a>10 coś się sypie, wynik obniżony jest o 1.
Np.: dla 11^2 otrzymuje 120 zamiast 121, 10^2 to 99 a nie 100. Tak teraz patrze ze mam błąd gdy podnoszę liczbę większa od 10 do potęgi nieparzystej...
Zależy mi na wskazaniu czemu moja wersja nie śmiga. Mimo, że może to być nie najbardziej optymalny sposób rozwiązania tego problemu.
#include <iostream>
#include <math.h>
using namespace std;
int nowe_a, nowe_b;
int ostatnia(int a, int b)
{
int pot;
int wynik;
pot = pow(a, b);
wynik = pot % 10;
cout << wynik << endl;
}
int main()
{
cin >> ilosc;
for (int i = 1; i <= ilosc; i++)
{
cin >> nowe_a;
cin >> nowe_b;
ostatnia(nowe_a, nowe_b);
}
return 0;
}