Pagini recente » Cod sursa (job #2888094) | Cod sursa (job #2931167) | Cod sursa (job #3183786) | Cod sursa (job #2476915) | Cod sursa (job #2949480)
#include<bits/stdc++.h>
#define int long long
using namespace std;
ifstream f("ratphu.in");
ofstream g("ratphu.out");
int n,k,p,put[20],dp[1<<18][21];//dp[mask][j]=numarul de moduri ca aranjand numarul atfel incat cifrele care au 1 in stare sa vina primele,
// iar numarul modulo p = j
char s[20];
signed main()
{
int i,j,nr=0,ans=0,mask;
f>>(s+1)>>p;
n=strlen(s+1);
for(i=1;i<=n;i++)
nr=nr*10+(s[i]-'0');
put[0]=1;
for(i=1;i<=19;i++)
put[i]=put[i-1]*2;
dp[0][0]=1;
for(mask=0;mask<=put[n]-1;mask++)
{
for(j=1;j<=n;j++)
{
if((mask&put[j-1])!=0)
continue;
for(k=0;k<p;k++)
dp[mask|put[j-1]][(k*10+(s[j]-'0'))%p]+=dp[mask][k];
}
}
g<<dp[put[n]-1][0];
return 0;
}