Cod sursa(job #2864881)

Utilizator puica2018Puica Andrei puica2018 Data 8 martie 2022 12:05:42
Problema Ratphu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

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

char s[20];
int a[20],p;
long long dp[1<<20][20];

int main()
{
    fin>>s>>p;
    for(int i=0; s[i]; i++) a[i]=s[i]-'0';
    int n=strlen(s);
    for(int bit=0; bit<n; bit++)
        dp[1<<bit][a[bit]%p]=1;
    for(int mask=0; mask<(1<<n); mask++)
    {
        for(int bit=0; bit<n; bit++)
        {
            if(((mask>>bit)&1)==0)
            {
                int newMask=mask|(1<<bit);
                for(int r=0; r<p; r++)
                    dp[newMask][(r*10+a[bit])%p]+=dp[mask][r];
            }
        }
    }
    fout<<dp[(1<<n)-1][0]<<"\n";
    return 0;
}