Cod sursa(job #2860448)

Utilizator NeganAlex Mihalcea Negan Data 2 martie 2022 17:05:19
Problema Ratphu Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int N;
char s[21];
int p, a[21], n;
long long dp[(1 << 18)][21];
int lele[21][21];
int main()
{
    int i, j, stare;
    fin >> (s + 1);
    fin >> p;
    n = strlen(s + 1);
    for(i = 1;i <= n;i++)
        a[i] = (s[i] - '0');
    for(i = 1;i <= n;i++)
        dp[1 << (i - 1)][a[i] % p] = 1;
    N = (1 << n) - 1;
    for(i = 1;i <= n;i++)
        for(j = 0;j < p;j++)
            lele[i][j] = (j * 10 + a[i]) % p;
    for(stare = 1;stare <= N;stare++)
        for(i = 1;i <= n;i++)
            if((stare & (1 << i - 1)) == 0)
                for(j = 0;j < p;j++)
                {
                    int masca = stare | (1 << (i - 1));
                    dp[masca][lele[i][j] % p] += dp[stare][j];
                }
    fout << dp[N][0] << "\n";

    return 0;
}