Pagini recente » Cod sursa (job #2402726) | Cod sursa (job #1154663) | Cod sursa (job #879130) | Cod sursa (job #329721) | Cod sursa (job #2053320)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char b[300];
long long a,c,n=0,p=1;
void citire()
{
scanf("%lld\n",&a);
scanf("%s",b);
scanf("%lld",&c);
for(long long i=1;i<=c;i++)
p*=10;
}
void transformare()
{
long long l=1;
for(long long i=strlen(b)-1;i>=0;i--)
{if(b[i]>'9')
n+=((b[i]-'A')+10)*l;
else
n+=(b[i]-'0')*l;
l*=16;
}
}
long long exp(long long a,long long b)
{
if(b==1)
return a;
if(b%2==0)
return exp(a,b/2)*exp(a,b/2);
else
return exp(a,b-1)*a;
}
long long facere(long long i)
{
if(i==1)
return a;
if(i%2==0)
{
return ((exp(a,i/2)+1)*facere(i/2))%p;
}
else
{
return a*(1+facere(i-1))%p;
}
}
void afisare()
{
long long z=facere(n)%p;
printf("%lld",z);
}
int main()
{
freopen("calcul.in","r",stdin);
freopen("calcul.out","w",stdout);
citire();
transformare();
afisare();
// cout << "Hello world!" << endl;
return 0;
}