Cod sursa(job #1044577)

Utilizator jul123Iulia Duta jul123 Data 30 noiembrie 2013 01:22:28
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<iostream>
#include<cstdio>
#define MOD 1999999973

using namespace std;

long long lgput(long long x, long long y)
{
    long long m;
    if(y==0)
        return 1;
    if(y==1)
        return x%MOD;
    if(y==2)
        return (x*x)%MOD;
    m=lgput(x, y/2);
    if(y%2==0)
        return (m*m)%MOD;
        else
            return (((x*m)%MOD)*m)%MOD;
}

int main()
{
    FILE *fin, *fout;
    fin=fopen("lgput.in","r");
    fout=fopen("lgput.out","w");

    long long n, p, k;
    fscanf(fin, "%lld %lld", &n, &p);
    k=lgput(n, p);
    fprintf(fout, "%lld", k);
}