Cod sursa(job #2075915)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 25 noiembrie 2017 20:38:37
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda dopaj_maxim Marime 0.68 kb
#include<stdio.h>
#include<limits.h>
#define MOD 1999999973
long long lgput(long long a,long long b)
{
    long long r=1;
    if(b==0)
    {
        return 1;
    }
    while(b>1)
    {
        if(b%2==0)
        {
            a=((a%MOD)*(a%MOD))%MOD;
        }
        else
        {
            r=((r%MOD)*(a%MOD))%MOD;
            a=((a%MOD)*(a%MOD))%MOD;
        }
        b/=2;
    }
    return ((a%MOD)*(r%MOD))%MOD;
}
FILE*fin,*fout;
int main()
{
    fin=fopen("lgput.in","r");
    fout=fopen("lgput.out","w");
    long long N,P;
    fscanf(fin,"%lld%lld",&N,&P);
    fprintf(fout,"%lld",lgput(N,P));
    fclose(fin);
    fclose(fout);
    return 0;
}