Cod sursa(job #2378970)

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

using namespace std;

long long unsigned ridicareLaPutere(long long unsigned x, long long unsigned 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, "%llu", &a);
    fscanf(f, "%llu", &b);
    fclose(f);
    a = ridicareLaPutere(a,b);
    a%=1999999973;
    g=fopen("lgput.out", "w");
    fprintf(g, "%llu", a);
    fclose(g);
    return 0;
}