Pagini recente » Cod sursa (job #490866) | Cod sursa (job #2854165) | Cod sursa (job #1381917) | Cod sursa (job #63414) | Cod sursa (job #2045119)
#include<fstream>
using namespace std;
unsigned long long int logput(unsigned long long int n, unsigned long long int p, unsigned long long int modul)
{
unsigned long long int lgput = 1;
unsigned long long int cur_power = 0;
unsigned long long int squares = 1;
unsigned long long int h = (n % modul);
while(p != 0)
{
while(2 * cur_power + 1 <= p)
{
lgput = (lgput * h) % modul;
cur_power = squares * 2 - 1;
squares = squares * 2;
h = ( h * h ) % modul;
}
p = p - cur_power;
cur_power = 0;
h = n;
squares = 1;
}
return lgput;
}
int main()
{
ifstream read("inversmodular.in");
ofstream write("inversmodular.out");
unsigned int a,n;
read>>a>>n;
write << logput(a,n-2,n);
}