Pagini recente » Cod sursa (job #449759) | Cod sursa (job #364310) | Cod sursa (job #42382) | Cod sursa (job #2768215) | Cod sursa (job #2026615)
#include <fstream>
using namespace std;
ifstream f("ratphu.in");
ofstream g("ratphu.out");
int dp[1<<19][20];
int rest[220];
int v[20];
int main(){
int N, 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;
}