Cod sursa(job #2254080)

Utilizator lucametehauDart Monkey lucametehau Data 4 octombrie 2018 19:21:38
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

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

const int VMAX = (1 << 18);

long long n, p;

string s;
int v[21];
long long dp[VMAX][21];
int mod[211];

int main() {
  in >> s >> p;
  n = s.size();
  for(int i = 0; i < n; i++)
    v[i] = s[i] - '0';
  dp[0][0] = 1;
  for(int i = 1; i < 210; i++)
    mod[i] = i % p;
  for(int i = 0; i < (1 << n) - 1; i++) {
    for(int j = 0; j < p; j++) {
      if(dp[i][j] == 0)
        continue;
      for(int k = 0; k < n; k++) {
        if(!(i & (1 << k)))
          dp[i | (1 << k)][mod[j * 10 + v[k]]] += dp[i][j];
      }
    }
  }
  out << dp[(1 << n) - 1][0];
  return 0;
}