Cod sursa(job #2258867)
| Utilizator | Data | 12 octombrie 2018 12:15:41 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <bits/stdc++.h>
using namespace std;
unsigned int n,p;
typedef unsigned long long ull;
#define ll long long
ifstream fin("lgput.in");
ofstream fout("lgput.out");
const int k=1999999973;
ull putere(unsigned int n,unsigned int p){
if (p==0) return 1;
else if (p==1) return n%k;
else if(p%2==0) return putere(((n%k)*(n%k))%k,p/2);
else if(p%2!=0) return putere(((n%k)*(n%k))%k,p/2)*n%k;
}
int main(){
fin>>n>>p;
fout<<putere(n,p);
}
