Cod sursa(job #3321510)

Utilizator parrot279Sofi Tudose parrot279 Data 9 noiembrie 2025 20:22:28
Problema Ratphu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");

long long dp[530000][21], n, p, nrc, v[19];

int main()
{
    fin>>n>>p;

    long long cn = n;
    while(cn > 0)
    {
        ++nrc;
        cn /= 10;
    }
    cn = n;
    for(int i = nrc-1; i >= 0; --i)
    {
        v[i] = cn % 10;
        cn /= 10;
    }

    long long tot = (1<<nrc)-1;
    dp[0][0] = 1;
    for(int masca = 0; masca <= tot; ++masca)
    {
        for(int i = 0; i < p; ++i)
        {
            if(!dp[masca][i])
                continue;
            for(int bit = 0; bit < nrc; ++bit)
            {
                if((masca & (1<<bit)))
                    continue;
                int mascanoua = (masca | (1<<bit)), restnou = (i*10 + v[bit]) % p;
                dp[mascanoua][restnou] += dp[masca][i];
            }
        }

    }
    fout<<dp[tot][0];


    return 0;
}