Cod sursa(job #513753)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 16 decembrie 2010 20:52:33
Problema Ridicare la putere in timp logaritmic Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
# include <fstream>
# define   N   1999999973
# define  LLL   long long
  using namespace std;
    LLL putere (LLL a){
		return a * a;
	}
    LLL ridicare (LLL a, LLL n){
		if (n == 1) return a;
		if (n % 2 == 0) return putere (ridicare (a, n / 2)) % N;
		if (n % 2 == 1) return a * putere (ridicare (a, (n - 1) / 2)) % N;
	}
	LLL a, n;
    int main (){
		ifstream f ("lgput.in");
		ofstream g ("lgput.out");
		f >> a >> n;
		g << ridicare (a, n);
		return 0;
	}