Pagini recente » Cod sursa (job #1846172) | Cod sursa (job #2161535) | Cod sursa (job #1426772) | Cod sursa (job #1077720) | Cod sursa (job #1318521)
#include<bits/stdc++.h>
using namespace std;
int digit[30];
long long d[(1 << 21)][25]; // cate permutari dau restul j ormate din cifrele din config i
int main()
{
FILE *fin = fopen("ratphu.in", "r");
FILE *fout = fopen("ratphu.out", "w");
long long n, p;
fscanf(fin, "%lld %lld", &n, &p);
int nr = 0;
while( n != 0 ) {
digit[nr] = n % 10;
nr++;
n /= 10;
}
d[0][0]=1;
long long lim = ( 1 << nr );
for( int i = 0; i < lim; ++i)
for(int k = 0; k < p; ++k)
for( int j = 0; j < nr; ++j )
if(( i & (1 << j)) == 0)
d[i | (1 << j)][(k * 10 + digit[j]) % p] += d[i][k];
fprintf(fout, "%d\n", d[(1 << nr) - 1][0]);
}