Cod sursa(job #3301525)

Utilizator Cristian_NegoitaCristian Negoita Cristian_Negoita Data 27 iunie 2025 14:56:31
Problema Calcul Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#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;
}