Cod sursa(job #365784)

Utilizator titusuTitus C titusu Data 19 noiembrie 2009 22:54:39
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
//Dandu-se doua numere naturale N si P, se cere sa se calculeze restul impartirii lui N^P la 1999999973.
//este vorba despre ridicare la putere in timp logaritmic

#include <fstream>
using namespace std;

 int f(int b, int p, int r){
	if(p==1)
		return b%r;
	else
		if(p%2)
			return ((long long)(b%r)*f(b,p-1,r) )%r;
		else
		{
			int tmp = f(b,p/2,r);
			return ((long long)tmp * tmp) %r;
		}
}

int main(){
	int n,p;
	ifstream fin("lgput.in"); fin>>n>>p; fin.close();
	ofstream fout("lgput.out"); fout<<f(n,p,1999999973); fout.close();
	return 0;
}