Cod sursa(job #2027363)

Utilizator whitewolf3131Ursu Laurentiu Cristian whitewolf3131 Data 25 septembrie 2017 22:35:48
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.45 kb
#include <stdio.h>

using namespace std;

int main()
{
	FILE *in, *out;
	in = fopen("lgput.in", "r");
	out = fopen("lgput.out", "w");
	long long x, n, y=1;
	const long long N=1999999973;
	fscanf(in, "%lld%lld", &x, &n);
	while(n>1){
        if(n%2==0){
            x*=x;
            n/=2;
        }
        else{
            y*=x;
            x*=x;
            n=(n-1)/2;
        }
	}
	x*=y;
	fprintf(out, "%lld", x%N);
	return 0;
}