Cod sursa(job #431743)
Utilizator | Data | 1 aprilie 2010 12:59:50 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.49 kb |
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int m=1999999973;
int main()
{
FILE *f=fopen("lgput.in","r");
FILE *g=fopen("lgput.out","w");
char t[100]="";
long a,b,n;
long akh;
long eredmeny=1;
fscanf(f,"%ld",&a);
akh=a;
fscanf(f,"%ld",&n);
itoa(n,t,2);
strrev(t);
eredmeny=1;
for(int i=0;i<strlen(t);i++)
{
if(t[i]=='1')
eredmeny*=akh%m;
akh*=akh%m;
}
fprintf(g,"%ld",eredmeny);
fclose(f);
fclose(g);
return 0;
}