Pagini recente » Cod sursa (job #2641641) | Cod sursa (job #2874016) | Cod sursa (job #1883762) | Cod sursa (job #753030) | Cod sursa (job #1794282)
#include <cstdio>
#include <queue>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
int cif[19];
int dp[1<<19][25];
int main(){
freopen("ratphu.in", "r", stdin);
freopen("ratphu.out", "w", stdout);
int n,i,c,limit,j,k,l;
scanf("%d %d", &n, &k);
c = 0;
while(n){
cif[c++] = n%10;
n /= 10;
}
limit = 1<<c;
for(i = 0;i < c;i++){
dp[1<<i][cif[i]%k]++;
}
for(i = 1;i < limit;i++){
for(l = 0;l < k;l++){
if(dp[i][l]){
for(j = 0;j < c;j++){
if((i&(1<<j)) == 0){
dp[i|(1<<j)][(l*10+cif[j])%k] += dp[i][l];
}
}
}
}
}
printf("%d", dp[limit-1][0]);
return 0;
}