Pagini recente » Autentificare | Cautari ortogonale | Istoria paginii runda/summer_camp_1 | Monitorul de evaluare | Cod sursa (job #1330700)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("ratphu.in");
ofstream g("ratphu.out");
int D[1<<20][21];
char sir[50];
int n,p;
int main()
{
int i,j,k,q;
f>>sir>>p;
n = strlen(sir);
for(i=0;i<n;++i) sir[i] -= '0';
D[0][0] = 1;
for(i=0; i < (1<<n); ++i) for(j=0;j<p;++j) if(D[i][j])
{
for(k=0;k<n;++k) if( ( (1<<k) & i ) == 0)
{
q = 10*j + sir[n-k-1];
while(q >= p) q -= p;
D[((1<<k)|i)][q] += D[i][j];
}
}
g<<D[(1<<n)-1][0]<<"\n";
f.close();
g.close();
return 0;
}