Witam!
Od jakiegoś czasu próbuję rozwiązać zadanie z serwisu themis.lo14.wroc.pl. Niestety w żaden sposób nie potrafię go zrobić. Mój kod, albo wykonuje się za wolno, albo wychodzą złe wyniki. W końcu użyłem gotowego rozwiązania z internetu wstawiając tylko dwie swoje linijki, ale niestety to też nie działa. Treść zadania:
Zadanie
Dla danych liczb a i b, t.że 0<=a, b<= 1'000'000'000, oblicz cztery ostatnie (najmniej znaczące) cyfry z liczby ab
Wejście: a b
Wyjście: Liczba powstała po odcięciu cyfr powyżej cyfry dziesięciu tysięcy z liczby ab
Przykład
Dla danych wejściowych: 2 3
poprawną odpowiedzią jest: 8
Dla danych wejściowych: 10 10
poprawną odpowiedzią jest: 0
A oto mój ostatni kod:
#include<iostream>
using namespace std;
long long pot_szybkie(long long a, unsigned int n)
{
long long w = 1;
while(n>0)
{
a%=10000;
if (n%2 == 1) //jesli bit jest = 1
w *= a;
a*= a;
n/=2; //skrócenie o jeden bit
}
w%=10000;
return w;
}
int main()
{
unsigned int n;
long long a;
cin>>a>>n;
cout<<a<<" do potegi "<<n<<" wynosi "<<pot_szybkie(a, n);
return 0;
}
Proszę o jakieś wskazówki.