Cod sursa(job #1753217)

Utilizator alexandrionUNIBUC Marcu Alexandru alexandrion Data 6 septembrie 2016 10:06:44
Problema Ridicare la putere in timp logaritmic Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>
using namespace std;

#define module 1999999973

ifstream f("lgput.in");
ofstream g("lgput.out");

long long lgput (long long a , long long b){

    if(b==0)
        return 1;
    if(b==1)
        return a;
    if(b%2==0)
        return (lgput(a,b/2)*lgput(a,b/2))%module ;
    else
        return (lgput(a,b/2)*lgput(a,b/2)*a)%module;
}

long long lgputIterativ(int a , int b){

    long long  p= 1 ;
    while(b!=0){
        if (b%2!=0){
            p = (p*a)%module;
            b--;
        }
        a = (a*a)%module;
        b=b/2;
    }

    return p;
}

int main()
{
    long long a , b ;
    f>>a>>b;
    g<<lgput(a,b)%module;
    return 0;
}