Pagini recente » Cod sursa (job #80714) | Cod sursa (job #448238) | Cod sursa (job #1946947) | Cod sursa (job #142952) | Cod sursa (job #1946886)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
const int Dim = (1 << 18) ;
long long n, ps[Dim][20];
int p, c[20], nr;
int main()
{
fin >> n >> p;
while ( n )
{
c[nr++] = n % 10;
n /= 10;
}
reverse(c, c + nr);
ps[0][0] = 1;
for ( int i = 0; i < ( 1 << nr); i++ )
{
for ( int j = 0; j < p; j++ )
if ( ps[i][j] )
for ( int k = 0; k < nr; k++ )
{
if ( (i & ( 1 << k )) == 0 )
ps[i | ( 1 << k )][(j * 10 + c[k]) % p] += ps[i][j];
}
}
fout << ps[(1 << nr) - 1][0];
fin.close();
fout.close();
return 0;
}