Pagini recente » Cod sursa (job #311579) | Cod sursa (job #1116471) | Cod sursa (job #1191960) | Cod sursa (job #1820308) | Cod sursa (job #2281610)
#include<fstream>
using namespace std;
ifstream f("lgput.in");
ofstream g("lgput.out");
int mod=1999999973,n,p;
int putere(int n,int p)
{
int rest=1;
//daca puterea este 0 returnez automat 1
if(p==0)
return 1;
if(p==1)
//daca puterea este 1, returnez automat n%mod
return n%mod;
else
//in caz contrar, atata timp cat p nu a ajuns pe 0
{
while(p!=0)
{
//daca este nr par, variabila rest retine fostul rest inmultit cu n, totul % mod
if(p%2==1)
rest=(1LL*rest*n)%mod;
//1LL folosim pentru a converti local numarul long long
//indiferent daca este par sau impar, retin in n fostul n ridicat la patrat, totul %mod
n=(1LL*n*n)%mod;
//impartim de fiecare data pe p la 2
p/=2;
}
}
return rest;
}
int main()
{
f>>n>>p;
g<<putere(n,p);
return 0;
}