Cod sursa(job #2021292)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 13 septembrie 2017 09:18:31
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

const int MAXN = 18;
const int MAXP = 20;

int v[MAXN];

long long dp[1 << MAXN][MAXP];

int main() {
    FILE *fi, *fout;
    int i, p;
    long long n;
    fi = fopen("ratphu.in" ,"r");
    fout = fopen("ratphu.out" ,"w");
    fscanf(fi,"%lld %d " ,&n,&p);
    int sz = 0;
    while(n > 0) {
        v[sz++] = n % 10;
        n /= 10;
    }
    dp[0][0] = 1;
    for(int conf = 1; conf < (1 << sz); conf++) {
        for(i = 0; i < sz; i++)
           if(conf & (1 << i)) {
               for(int r = 0; r < p; r++)
                    dp[conf][(r * 10 + v[i]) % p] += dp[conf ^ (1 << i)][r];
           }
    }
    fprintf(fout,"%lld" ,dp[(1 << sz) - 1][0]);
    fclose(fi);
    fclose(fout);
    return 0;
}