Pagini recente » Cod sursa (job #1350368) | Cod sursa (job #2550714) | Cod sursa (job #677725) | Cod sursa (job #2065824) | Cod sursa (job #2044087)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
long long sol, a, b, mod;
int c, k, l;
char nr[9];
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;
}
long long putere_10(int p, long long a)
{
if(p==0)
return 1;
if(p%2==0)
return putere_10(p/2, a*a);
return a*putere_10(p-1, a);
}
void euclidex(long long a, long long b, int &k, int &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%s\n%d\n", &a, nr, &c);
for(int i=0;i<=strlen(nr)-1;i++)
if(nr[i]>='0' && nr[i]<='9')
b=b*16+nr[i]-'0';
else
b=b*16+nr[i]-'A'+10;
mod=putere_10(c+1, 10);
sol=putere(b+1, a%mod)-a;
euclidex((a-1), mod, k, l);
while(l<0)
l+=mod;
printf("%lld", (l*sol)%mod);
return 0;
}