Cod sursa(job #2026621)

Utilizator LucaSeriSeritan Luca LucaSeri Data 24 septembrie 2017 18:57:09
Problema Ratphu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;

ifstream f("ratphu.in");
ofstream g("ratphu.out");

int dp[524300][25];
int rest[220];
int v[20];

int main(){
    long long N;
    int P;
    f >> N >> P;
    for(int i = 0; i <= 200; ++i){
        rest[i] = i%P;
    }

    int cif = 0;
    while(N){
        v[cif++] = N%10;
        N/=10;
    }

    dp[0][0] = 1;
    int mask = (1<<cif)-1;
    for(int i = 0; i < mask; ++i){
        for(int j = 0; j < P; ++j){
            if(dp[i][j]){
                for(int k = 0; k < cif; ++k){
                    if((1<<k)&i) continue;
                    dp[i|(1<<k)][rest[j*10+v[k]]] += dp[i][j];
                }
            }
        }
    }

    g << dp[mask][0];
    return 0;
}