Cod sursa(job #431762)

Utilizator gyeresihunorGyeresi Hunor gyeresihunor Data 1 aprilie 2010 13:13:51
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>

long long m=1999999973;

int main()
{
	FILE *f=fopen("lgput.in","r");
	FILE *g=fopen("lgput.out","w");
	int t[100]={0};
	long long a,b,n;
	long long akh;
	long long eredmeny=1;
	fscanf(f,"%lld",&a);
	akh=a;
	fscanf(f,"%lld",&n);
	long long nn=n;
	int e=0;
	while(nn)
	{
		t[e]=nn%2;
		nn/=2;
		e++;
	}
	eredmeny=1;
	for(int i=0;i<e;i++)
	{
		if(t[i]==1)
			eredmeny*=akh%m;
		eredmeny=eredmeny%m;
		akh*=akh%m;
	}
	fprintf(g,"%.0lld",eredmeny);
	fclose(f);
	fclose(g);
	return 0;
}