Cod sursa(job #508597)

Utilizator printesoiDodon Victor printesoi Data 8 decembrie 2010 22:36:56
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.89 kb
/*
 * =====================================================================================
 *
 *       Filename:  exp_rapica.c
 *
 *    Description:  Exponentiere rapida
 *
 *        Version:  1.0
 *        Created:  12/08/2010 09:43:50 PM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Dodon Victor (), 
 *        Company:  Calculatoare ,UPB
 *
 * =====================================================================================
 */                    

#include	<stdio.h>
#include	<stdlib.h>

int main ()
{
	long long x,rez=1;
	int i,n,p;
	const int mod=1999999973;

    freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);

	scanf("%d%d",&n,&p);
	x=n;

	/*for (i=0;(1<<i)<=p;i++){
		if (p&(1<<i)) 
			rez=(rez*x)%mod;
		x=(x*x)%mod;
	} */

    while (p) {
		if (p&1) 
			rez=(rez*x)%mod;
		x=(x*x)%mod;
		p>>=1;
	}
	printf("%lld\n",rez);
	return EXIT_SUCCESS;
}