Cod sursa(job #1070812)

Utilizator pitbull007Hurmuzache Ciprian pitbull007 Data 2 ianuarie 2014 01:20:12
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.48 kb
/*
 * putere.c
 *
 *  Created on: Jan 2, 2014
 *      Author: ciprian
 */
#include<stdio.h>
#include<stdlib.h>

const int m=1999999973;;

int main() {
	FILE *fin,*fout;
	int n,p,i;
	long long a,sol=1;


	fin=fopen("lgput.in","r");
	fout=fopen("lgput.out","w");
	fscanf(fin,"%d",&n);
	fscanf(fin,"%d",&p);

	a=n;
		for(i=0;(1<<i)<=p; i++) {	// 1<<i o sa produce pe rand 0,2,4,8,16

			if(((1<<i) & p )> 0)
				sol=(sol*a)%m;
			a=(a*a) % m;

		}

		fprintf(fout,"%lld",sol);


	return 0;
}