Pagini recente » Cod sursa (job #1531638) | Cod sursa (job #3289931) | Cod sursa (job #3281108) | Cod sursa (job #103312) | Cod sursa (job #1362331)
#include <fstream>
#include <cstring>
#define IN "ratphu.in"
#define OUT "ratphu.out"
const int MAXr = 30 ;
const int MAXm = ( 1 << 20 ) ;
using namespace std;
ifstream fin ( IN ) ;
ofstream fout ( OUT ) ;
long long d [ MAXm ] [ MAXr ] ;
int dig [ MAXr ] ;
long long nr ;
int main()
{
int p , n = 0 ;
fin >> nr >> p ;
while ( nr ) {
dig [ n ] = nr % 10 ;
nr /= 10 ;
n ++ ;
}
d [ 0 ] [ 0 ] = 1 ;
for ( int mask = 0 ; mask < ( 1 << n ) ; ++ mask )
for ( int r = 0 ; r < p ; ++ r )
if ( d [ mask ] [ r ] )
for ( int c = 0 ; c < n ; ++ c )
if ( !( mask & ( 1 << c ) ) ){
int r2 = r * 10 + dig [ c ] ;
while ( r2 >= p )
r2 -= p ;
d [ mask | ( 1 << c ) ] [ r2 ] += d [ mask ] [ r ] ;
}
fout << d [ ( 1 << n ) - 1 ] [ 0 ] ;
fin.close () ;
fout.close () ;
return 0;
}