Cod sursa(job #1942009)

Utilizator SlenderSnaxOrban Abel SlenderSnax Data 27 martie 2017 19:00:01
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");
int perm(long long n, long long p) {
	long long num = 1999999973;
	long long y = 1;
	if (p == 0)
		return 1;
	while (p > 1) {
		if (p % 2 == 0) {
			n *= n;
			p /= 2;
		}
		else {
			y *= n;
			n *= n;
			p = (p - 1) / 2;
		}
	}
	n *= y;
	return (n%num);
}
int main()
{
	long long n,p;
	in >> n;
	in >> p;
	out << perm(n, p);
	return 0;
}