Cod sursa(job #648225)

Utilizator PatrikStepan Patrik Patrik Data 13 decembrie 2011 10:09:27
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
	#include<stdio.h>
	#define m 1999999973
	FILE *f , *g ;
	unsigned long n , p;
	long long sol = 1;
	
	void citire();
	void solve();
	void tipar();
	
	int main()
	{
		citire();
		solve();
		tipar();
		return 0;
	}
	
	void citire()
	{
		f=fopen("lgput.in" , "r" );
		fscanf(f , "%ld%ld" , &n , &p );
		fclose(f);
	}
	
	void solve()
	{
		long long a = n;
		for( int i = 0 ; (1<<i) <= p ; ++i )
		{
			if(((1<<i) & p)>0)
				sol = (sol * a)%m;
			a=(a*a)%m;
		}
	}
	
	void tipar()
	{
		g=fopen("lgput.out" , "w");
		fprintf(g , "%lld" , sol);
		fclose(g);
	}