Pagini recente » Cod sursa (job #1736794) | Cod sursa (job #244944) | Cod sursa (job #1482816) | Cod sursa (job #589766) | Cod sursa (job #2043984)
#include <iostream>
#include <cstdio>
using namespace std;
long long sol, a, b, mod, k, l;
int c;
char nr;
long long putere(long long p, long long a)
{
if(p==0)
return 1;
if(p%2==0)
return putere(p/2, (a*a)%mod)%mod;
return (a*putere(p-1, a))%mod;
}
void euclidex(long long a, long long b, long long k, long long l)
{
if(b==0)
{
l=1;
k=0;
return;
}
int k1, l1;
euclidex(b, a%b, k1, l1);
l=k1;
k=l1-(a/b)*k1;
}
int main()
{
freopen("calcul.in", "r", stdin);
freopen("calcul.out", "w", stdout);
scanf("%lld\n%c\n%d\n", &a, &nr, &c);
if(nr>='0' && nr<='9')
b=nr-'0';
else
b=nr-'A'+10;
long long put=10LL;
mod=putere(c, put);
sol=putere(b+1, a%mod);
sol-=a;
euclidex(sol, mod, k, l);
while(l<0)
l+=mod;
printf("%lld", (l*sol)%mod);
return 0;
}