Cod sursa(job #1336476)
Utilizator | Bogdan Pop pop_bogdan | Data | 7 februarie 2015 19:35:46 |
---|---|---|---|
Problema | Ratphu | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.66 kb |
#include <fstream>
using namespace std;
ifstream is("ratphu.in");
ofstream os("ratphu.out");
string S;
int P;
long long D[1<<20][21];
int main()
{
is >> S >> P;
for ( int i = 0; i < S.size(); ++i )
D[(1<<i)][(S[i]-'0')%P] = 1;
for ( int i = 0; i < (1<<S.size()); ++i )
for ( int j = 0; j < S.size(); ++j )
{
if ( !(i & (1<<j)) )
{
for ( int k = 0; k < P; ++k )
{
D[i | (1<<j)][(k * 10 + ((S[j])-'0'))%P] += D[i][k];
}
}
}
os << D[(1<<S.size())-1][0];
is.close();
os.close();
}