Pagini recente » Profil darkylawl | Profil Anca21 | Istoria paginii runda/minune3 | Statistici Radut Dragos (Waze33) | Cod sursa (job #2053302)
#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 a,long b)
{
long long x=1;
for(long long i=1;i<=b;i++)
x*=a;
return x;
}
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;
}