Cod sursa(job #534820)

Utilizator nahsucpasat cristian nahsuc Data 16 februarie 2011 11:50:26
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>
#include<math.h>
FILE *in,*out;
int baza,exponent,nrmax;
unsigned long long rest,cat,i;
long long puterea=1,suma=1;

int main()
{
    in=fopen("modulo.in","rt");
    out=fopen("modulo.out","wt");
    fscanf(in,"%d%d%d",&baza,&exponent,&nrmax);
    puterea=baza;
    for(i=0;(1<<i)<=exponent && i<=30;i++)
    {
        if((1<<i)&exponent>0)
          suma=(suma*puterea)%nrmax;
        puterea=(puterea*puterea)%nrmax;
   }
    if(i=31)
        fprintf(out,"%lld",(suma*puterea)%nrmax);
    else
        fprintf(out,"%lld",suma);
    return 0;
}