Pagini recente » Istoria paginii runda/emag_2016-incepatori-4 | Cod sursa (job #1888040) | Cod sursa (job #1017079) | Istoria paginii runda/oni2006_clasa10_ziua1/clasament | Cod sursa (job #2054313)
#include <cstring>
#include <bits/stdc++.h>
#include <cstdio>
#include <vector>
#define N 500005
using namespace std;
long long a, mod=1, rez;
int c;
char s[N];
vector <int> b;
void calc_modulo()
{
for(int i=1;i<=c;i++)
mod=mod*10;
}
void calc_baza()
{
for(int i=0;i<strlen(s);i++)
a=a*10+s[i]-'0';
}
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("%s\n", s);
calc_baza();
scanf("%s\n%d\n", s, &c);
calc_modulo();
a=a%mod;
calc_putere();
calc_rez();
printf("%lld ", rez%mod);
return 0;
}