Cod sursa(job #466042)
| Utilizator | Data | 25 iunie 2010 20:46:37 | |
|---|---|---|---|
| Problema | Ratphu | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.46 kb |
#include <cstdio>
typedef long long i64;
i64 din[1<<18][20];
int main()
{
i64 N;
int n,i,j,r,P,c[22];
freopen("ratphu.in","r",stdin);
scanf("%lld %d",&N,&P);
for (n=0;N>0;N/=10) c[n++]=N%10;
din[0][0]=1;
for (i=0;i < (1<<n);++i)
for (r=0;r<P;++r)
if (din[i][r])
for (j=0;j<n;++j)
if (!((1<<j)&i))
din[i+(1<<j)][(r*10 + c[j])%P]+=din[i][r];
freopen("ratphu.out","w",stdout);
printf("%lld\n",din[(1<<n)-1][0]);
return 0;
}
