Pagini recente » Statistici octavian lupu (Octavian1705) | Profil adiaioana | Cod sursa (job #1286914) | Cod sursa (job #3127890) | Cod sursa (job #1336495)
#include <fstream>
using namespace std;
ifstream is("ratphu.in");
ofstream os("ratphu.out");
string S;
int P, N, remainder, j, k;
int C[20];
long long D[1<<20][20], nr, i;
int main()
{
is >> S >> P;
N = S.size();
for ( int i = 0; i < N; ++i )
C[i] = S[i]-'0';
D[0][0] = 1;
nr = (1<<(N));
for ( i = 0; i < nr; ++i )
for ( j = 0; j < N; ++j )
{
if ( !(i & (1<<j)) )
{
for ( k = 0; k < P; ++k )
{
if ( D[i][k] != 0 )
{
remainder = (k * 10 + C[j])%P;
D[i | (1<<j)][remainder] += D[i][k];
}
}
}
}
os << D[(1<<N)-1][0];
is.close();
os.close();
return 0;
}