Pagini recente » Cod sursa (job #1859625) | Cod sursa (job #968487) | Cod sursa (job #2679896) | Cod sursa (job #2064724) | Cod sursa (job #1792005)
#include <iostream>
#include <fstream>
using namespace std;
long long number, DP[1<<20][21];
int valori[19],position=0,biti,mask,rt,P;
int main()
{
int i;
fstream f("ratphu.in",ios::in);
ofstream g("ratphu.out");
f>>number>>P;
while(number)
{
valori[++position] = number%10;
number/=10;
}
for(i=1;i<=position;++i)
{
DP[1<<(position-i)][valori[i]%P]=1;
}
biti = (1<<position)-1;
for(i=0;i<=biti;++i)
{
for(mask = 1;mask<=position;++mask)
{
if(!(i&(1<<(position-mask))))
{
for(rt=0; rt<P;++rt)
{
DP[(1<<(position-mask)) |i ][(rt*10+valori[mask])%P]+=DP[i][rt];
}
}
}
}
g<<DP[biti][0];
return 0;
}