Cod sursa(job #651293)

Utilizator dmgciubotaruCiubotaru Gabriel dmgciubotaru Data 20 decembrie 2011 02:10:28
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.45 kb
#include "stdio.h"

unsigned int a,b,r;
FILE *f,*g;

void pow(unsigned int p,unsigned int x,unsigned int *rez)
{
	if(p*2<=b)
	{
		pow(p*2,x*x,rez);
		if(b>=p)
		{		
			b-=p;
			*rez*=x;
			*rez %=1999999973;
		}
	}
	else
	{
		*rez = x;
		b-=p;
	}
}
	


int main()
{
	f = fopen("lgput.in","r");
	g = fopen("lgput.out","w");
	fscanf(f,"%d%d",&a,&b);
	pow(1,a,&r);
	fprintf(g,"%d",r%1999999973);
	fclose(f);
	fclose(g);
	return 0;
}