Pagini recente » Cod sursa (job #2605592) | Cod sursa (job #170133) | Cod sursa (job #2597435) | Cod sursa (job #2498197) | Cod sursa (job #2026619)
#include <fstream>
using namespace std;
ifstream f("ratphu.in");
ofstream g("ratphu.out");
int dp[524300][20];
int rest[220];
int v[20];
int main(){
long long N;
int 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;
}