Pagini recente » Cod sursa (job #2834860) | Cod sursa (job #2188275) | Cod sursa (job #1230813) | Cod sursa (job #1173454) | Cod sursa (job #2475991)
#include <fstream>
#include <vector>
using namespace std;
long long n, dp[20][(1 << 18) + 5];
int digits[20], mxexp, k;
int main()
{
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
fin >> n >> k;
while (n > 0)
{
digits[mxexp++] = n % 10;
n /= 10;
}
dp[0][0] = 1;
for (int state = 0;state < (1 << mxexp);++state)
for (int i = 0;i < mxexp;++i)
if ((state & (1 << i)) == 0)
for (int rest = 0;rest < k;++rest)
dp[(rest * 10 + digits[i]) % k][state | (1 << i)] += dp[rest][state];
fout << dp[0][(1 << mxexp) - 1] << "\n" ;
fin.close();
fout.close();
return 0;
}