Cod sursa(job #2587320)

Utilizator alexradu04Radu Alexandru alexradu04 Data 22 martie 2020 17:23:01
Problema Ratphu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <algorithm>

using namespace std;
int dp[(1<<18)][25];
int digits[20];
int main() {
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);
    int n,p,numberOfDigits=0;
    scanf("%lld %d",&n,&p);
    do {
        digits[++numberOfDigits]=n%10;
        n/=10;
    }while(n);
    reverse(digits + 1,digits+numberOfDigits + 1);
    dp[0][0]=1;
    for(int i=0;i<=(1<<18);++i) {
        for(int j=0;j<=p;++j) {
            if(dp[i][j])
                for(int k=1;k<=numberOfDigits;++k) {
                    if(!(i&(1<<(k-1)))) {
                        dp[i|(1<<(k-1))][(j*10+digits[k])%p]+=dp[i][j];
                    }
                }
        }
    }
    printf("%d",dp[(1<<numberOfDigits)-1][0]);
    return 0;
}