Cod sursa(job #1753216)
Utilizator | Data | 6 septembrie 2016 10:05:17 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.61 kb |
#include <iostream>
using namespace std;
#define module 1999999973
long long lgput (int a , int 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()
{
int a , b ;
cin>>a>>b;
cout<<lgputIterativ(a,b)%module;
return 0;
}