Cod sursa(job #689887)

Utilizator vitaleamaldur vitalik vitalea Data 24 februarie 2012 22:27:23
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

#define N 1999999973

long long putere( int n, int exp ){
	if( exp == 0 ) return 1;
	if( exp % 2 == 0 ){
		long long a = putere( n, exp / 2 );
		long long mod = a % N;
		return ( mod * mod ) % N ;
	}
	else{
		long long a =  putere( n, ( exp - 1 ) / 2 );
		long long mod = a % N;
		return ( ( n % N ) * ( ( mod * mod ) % N ) ) % N;
	}
}

int main(){
	ifstream in( "lgput.in" );
	ofstream out( "lgput.out" );
	int n, exp;
	in >> n >> exp;
	out << putere( n, exp );
	in.close();
	out.close();
	return 0;
}