Cod sursa(job #1444331)
| Utilizator | Data | 29 mai 2015 16:22:10 | |
|---|---|---|---|
| Problema | Ratphu | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 | Marime | 0.65 kb |
#include <cstdio>
#include <iostream>
using namespace std;
const int maxstari = (1<<18)+5;
const int dimstari = 20;
long long bst[maxstari][dimstari];
long long n;
int v[30];
int p,nr;
int main ()
{
freopen ("ratphu.in","r",stdin);
freopen ("ratphu.out","w",stdout);
cin>>n>>p;
int i,j,k;
for ( ; n; n/=10)
v[nr++]=n%10;
bst[0][0]=1;
for (i=0; i<(1<<nr); ++i)
for (j=0; j<p; ++j)
if (bst[i][j])
for (k=0; k<nr; ++k)
if (!(i&(1<<k)))
bst[i|(1<<k)][(j*10+v[k])%p]+=bst[i][j];
cout<<bst[(1<<nr)-1][0];
}
