Pagini recente » Cod sursa (job #500692) | Cod sursa (job #2575799) | Cod sursa (job #38608) | Cod sursa (job #416018) | Cod sursa (job #1417474)
#include<fstream>
using namespace std;
long long n;
int p,nrcif,cif[20];
long long nr[263000][20];
int main()
{
int i,j,r,conf,lim;
ifstream fin("ratphu.in");
fin>>n>>p;
fin.close();
while(n)
{
cif[nrcif++]=n%10;
n/=10;
}
for(i=0;i<nrcif;i++)
nr[(1<<i)][cif[i]%p]++;
lim=(1<<nrcif);
for(conf=1;conf<lim;conf++)
{
for(i=0;i<p;i++)
{
if(nr[conf][i]==0)
continue;
for(j=0;j<nrcif;j++)
{
if(!(conf&(1<<j)))
{
r=i*10+cif[j];
while(r>=p)
r-=p;
nr[conf|(1<<j)][r]+=nr[conf][i];
}
}
}
}
ofstream fout("ratphu.out");
fout<<nr[lim-1][0]<<"\n";
fout.close();
return 0;
}