Cod sursa(job #2378962)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 12 martie 2019 19:30:19
Problema Ridicare la putere in timp logaritmic Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include<cstdio>

using namespace std;

long long int ridicareLaPutere(long long int x, long long int y)
{
    if(y==2)
        return x*x;
    if(y==1)
        return x;
    if(y==0)
        return 1;
    if(y%2==1)
        x=ridicareLaPutere(x,y/2)*ridicareLaPutere(x,y/2+1);
    else
        x=ridicareLaPutere(x,y/2)*ridicareLaPutere(x,y/2);
    x%=1999999973;
    return x;
}

int main ()
{
    FILE *f,*g;
    long long unsigned a,b;
    f=fopen("lgput.in", "r");
    fscanf(f, "%lli", &a);
    fscanf(f, "%lli", &b);
    fclose(f);
    a = ridicareLaPutere(a,b);
    a%=1999999973;
    g=fopen("lgput.out", "w");
    fprintf(f, "%lli", a);
    fclose(g);
    return 0;
}