Pagini recente » Cod sursa (job #2939607) | Cod sursa (job #959835) | Cod sursa (job #1167782) | Cod sursa (job #1353194) | Cod sursa (job #2210211)
#include <iostream>
#include <fstream>
#define MAXN 524300
#define MAXP 20
using namespace std;
ifstream in("ratphu.in");
ofstream out("ratphu.out");
int v[MAXP],p,nr_cifre;
long long dp[MAXN][MAXP],n;
int main()
{
in>>n>>p;
while(n){
v[nr_cifre] = n % 10;
++nr_cifre;
n /= 10;
}
dp[0][0] = 1;
int mask = (1<<(nr_cifre)) - 1;
for(int i = 0; i < mask; i++){
for(int j = 0; j < p; j++){
if(dp[i][j]){
for(int k = 0; k < nr_cifre; k++)
if((i & (1<<k)) == 0)
dp[(i + (1<<k))][(j*10 + v[k]) % p] += dp[i][j];
}
}
}
out<<dp[mask][0];
return 0;
}