Cod sursa(job #616697)

Utilizator milijrCristian Militaru milijr Data 13 octombrie 2011 08:34:29
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("date.txt");
int ridicareLaPutereSmechera(int nr, int putere)
{
	int nr2;
	if(putere == 2)
		nr2 = nr * nr % 1999999973;
	else
		if(putere == 1)
			nr2 = nr % 1999999973;
		else
			if(putere % 2 == 1)
			{
				nr2 = ridicareLaPutereSmechera(nr,putere / 2);
				nr2 = nr * (nr2 * nr2 % 1999999973) % 1999999973;
			}
			else
			{
				nr2 = ridicareLaPutereSmechera(nr, putere / 2);
				nr2 = nr2 * nr2 % 1999999973;
			}
	return nr2;
}
int main()
{
	ifstream fin2("lgput.in");
	ofstream fout("lgput.out");
	int a,b;
	fin2>>a>>b;
	fout<<ridicareLaPutereSmechera(a,b);
}