Cod sursa(job #513754)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 16 decembrie 2010 20:57:34
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
# include <fstream>
# define   N   1999999973
# define  LLL   long long
  using namespace std;
    LLL putere (LLL a){
		return (a * a) % N;
	}
    LLL ridicare (LLL a, LLL n){
		if (n == 0) return 1;
		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;
	}