Cod sursa(job #602261)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 10 iulie 2011 12:53:43
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream.h>

using namespace std;

//Initializare
long long int n,put;

//Exponentiere modulara
long long int ridica(long long int putere)
{
     if(putere==1)
     {
          return (n%1999999973);            
     }     
     else if(putere%2==0)
     {
          long long int i=(ridica(putere/2))%1999999973;
          return (i*i)%1999999973;        
     }
     else
     {
         long long int i=(ridica(putere/2))%1999999973;
         return (((i*i)%1999999973)*(n%1999999973)%1999999973);
     }
}

int main()
{
    //Fisiere
    ifstream fin("lgput.in");
    ofstream fout("lgput.out");
    
    //Citire
    fin>>n;
    fin>>put;
    
    //Afisare + Calcule
    fout<<ridica(put)<<endl;
    
    //Incheiere
    fin.close();
    fout.close();
    return 0;      
}