Pagini recente » Cod sursa (job #109330) | Cod sursa (job #1466829) | Cod sursa (job #2564162) | Cod sursa (job #1658735) | Cod sursa (job #3301525)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("calcul.in");
ofstream fout("calcul.out");
#define int long long
const int BMAX = 50001;
string A, B;
int c, a, b, MOD;
bitset<4 * BMAX> bits;
signed main()
{
fin >> A >> B >> c;
MOD = pow(10, c);
for(char cif : A)
a = (10 * a + (cif - '0')) % MOD;
for(int i = 0, bit_poz = 0; i < B.size(); i++, bit_poz += 4)
{
int cif = (isdigit(B[i]) ? B[i] - '0' : B[i] - 'A' + 10);
for(int j = bit_poz + 3; j >= bit_poz; j--)
bits[j] = cif % 2, cif /= 2;
}
int ans = 0, crt_power = 1;
for(int i = 0; i < 4 * B.size(); i++)
{
ans = (ans * (1 + crt_power)) % MOD;
if(bits[i] == 1)
ans = (ans * a + 1) % MOD;
crt_power = (crt_power * crt_power) % MOD;
if(bits[i] == 1)
crt_power = (crt_power * a) % MOD;
}
fout.width(c);
fout.fill('0');
fout << (ans * a) % MOD;
fin.close();
fout.close();
return 0;
}