Pagini recente » Cod sursa (job #285534) | Cod sursa (job #418465) | Cod sursa (job #2276361) | Cod sursa (job #795620) | Cod sursa (job #2816988)
#include <fstream>
#include <vector>
using namespace std;
long long dp[(1 << 19)][20];
int main(){
ifstream cin("ratphu.in");
ofstream cout("ratphu.out");
long long n;
int p;
cin >> n >> p;
dp[0][0] = 1;
vector <int> cif;
long long cn = n;
while(cn > 0){
cif.push_back(cn % 10);
cn /= 10;
}
for(int mask = 0; mask < (1 << cif.size()); ++ mask){
for(int bit = 0; bit < cif.size(); ++ bit){
if(mask & (1 << bit)){
continue;
}
for(int rest = 0; rest < p; ++ rest)
dp[mask | (1 << bit)][(rest * 10 + cif[bit]) % p] += dp[mask][rest];
}
}
cout << dp[(1 << cif.size()) - 1][0];
return 0;
}