Cod sursa(job #1726355)

Utilizator serbanmaria15Serban Maria-Catalina serbanmaria15 Data 7 iulie 2016 20:14:07
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<stdio.h>
#define Q 1999999973

int main()
{
	FILE *inputFile, *outputFile;
	inputFile=fopen("lgput.in","r");
	outputFile=fopen("lgput.out","w");

	long long n, p, y=1;
	fscanf(inputFile, "%lli", &n);
	fscanf(inputFile, "%lli", &p);

	if(p == 0)
	{
		fprintf(outputFile, "%lli", 1);
	    return 0;
	}

	while(p > 1)
	{
		if(p % 2 == 0)
		{
			n=(n*n)%Q;
			p=p/2;
		}
		else
		{
			y=(y*n)%Q;
			n=(n*n)%Q;
			p=(p-1)/2;
		}
	}
	fprintf(outputFile, "%lli", (y*n)%Q);
		

	return 0;
}