Pagini recente » Cod sursa (job #2335248) | Cod sursa (job #1424574) | Cod sursa (job #265318) | Cod sursa (job #1681502) | Cod sursa (job #1448114)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("ratphu.in");
ofstream out("ratphu.out");
long long dp[1<<18][20],n,n1;
int cif[20];
int main()
{ int i=0,q,p,a,k,j;
in>>n>>p;
n1=n;
while(n1)
{
cif[i]=n1%10;
n1/=10;
i++;
}
q=i;
for(k=0;k<q;k++)
dp[1<<k][cif[k]%p]=1;
for(i=1;i<=(1<<q)-1;++i)
for(j=0;j<q;++j)
{
if((i&(1<<j))==0) {
for(k=0;k<=p-1;++k)
{
dp[i|(1<<j)][(k*10+cif[k])%p]+=dp[i][k];
}
}
}
out<<dp[(1<<q)-1][0];
return 0;
}