Pagini recente » Cod sursa (job #1445958) | Cod sursa (job #1002491) | Cod sursa (job #1632369) | Cod sursa (job #1341826) | Cod sursa (job #2210215)
#include <iostream>
#include <fstream>
#define MAXN 524300
#define MAXP 20
using namespace std;
ifstream in("ratphu.in");
ofstream out("ratphu.out");
int v[MAXP],rest[300],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;
for(int i = 1; i < 300; i++)
rest[i] = i % p;
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))][rest[(j*10 + v[k])]] += dp[i][j];
}
}
}
out<<dp[mask][0];
return 0;
}