Pagini recente » Diferente pentru template/girls-programming-camp-2011 intre reviziile 5 si 4 | Cod sursa (job #3321510)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
long long dp[530000][21], n, p, nrc, v[19];
int main()
{
fin>>n>>p;
long long cn = n;
while(cn > 0)
{
++nrc;
cn /= 10;
}
cn = n;
for(int i = nrc-1; i >= 0; --i)
{
v[i] = cn % 10;
cn /= 10;
}
long long tot = (1<<nrc)-1;
dp[0][0] = 1;
for(int masca = 0; masca <= tot; ++masca)
{
for(int i = 0; i < p; ++i)
{
if(!dp[masca][i])
continue;
for(int bit = 0; bit < nrc; ++bit)
{
if((masca & (1<<bit)))
continue;
int mascanoua = (masca | (1<<bit)), restnou = (i*10 + v[bit]) % p;
dp[mascanoua][restnou] += dp[masca][i];
}
}
}
fout<<dp[tot][0];
return 0;
}