Pagini recente » Cod sursa (job #2198038) | Cod sursa (job #2539545) | Cod sursa (job #2334559) | Cod sursa (job #633722) | Cod sursa (job #2054208)
#include <cstring>
#include <cstdio>
#include <vector>
#define N 500005
using namespace std;
int a, c;
long long mod, rez;
char s[N];
vector <int> b;
int calc_modulo(int b, int p)
{
if(p==0)
return 1;
if(p%2==0)
return calc_modulo(b*b, p/2);
return calc_modulo(b, p-1)*b;
}
void calc_putere()
{
for(int i=0;i<strlen(s);i++)
{
int var;
if(s[i]>='0' && s[i]<='9')
var=s[i]-'0';
else
var=s[i]-'A'+10;
for(int i=3;i>=0;i--)
if(var>=(1<<i))
{
b.push_back(1);
var-=1<<i;
}
else
b.push_back(0);
}
}
void calc_rez()
{
long long x=1;
for(int i=0;i<b.size();i++)
{
rez=(rez*(x+1))%mod;
x=(x*x)%mod;
if(b[i])
{
x=(x*a)%mod;
rez=(rez+x)%mod;
}
}
}
int main()
{
freopen("calcul.in", "r", stdin);
freopen("calcul.out", "w", stdout);
scanf("%d\n%s\n%d\n", &a, s, &c);
mod=calc_modulo(10, c);
calc_putere();
calc_rez();
printf("%lld", rez);
return 0;
}