Cod sursa(job #1606348)

Utilizator dinu_sergiuDinu Sergiu Andrei dinu_sergiu Data 20 februarie 2016 10:07:10
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>


using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

int mod;

long long Calc(long long n, long long p)
{
    /*if(p==0)
        return 1;
    if(p==1)
        return n%mod;
    if(p%2==1)
        return ((n%mod)*(Calc(n-1, p)%mod))%mod;
    if(p%2==0)
    {
        long long v;
        v=Calc(n, p/2)%mod;
        return (v*v)%mod;
    }
    */

    if(p==1)
        return n;
    else if(p%2==0)
        return Calc((n*n)%mod, p/2)%mod;
    else return (n*Calc((n*n)%mod, p/2))%mod;
}

int main()
{
    mod=1999999973;
    int n, p;
    fin>>n>>p;
    fout<<Calc(n, p);
    fin.close();
    fout.close();
    return 0;
}