Pagini recente » Cod sursa (job #785098) | Cod sursa (job #2445366) | Istoria paginii utilizator/rolandpetrean | Statistici Teirau Oana (shp1f) | Cod sursa (job #473467)
Cod sursa(job #473467)
#include <iostream>
#include <fstream>
#define nmax 1 << 3
#define pmax 20
using namespace std;
const char iname[] = "ratphu.in";
const char oname[] = "ratphu.out";
ifstream fin(iname);
ofstream fout(oname);
int dp[nmax + 5][pmax], i, j, k, N, P, nr, a[pmax];
int calc(int x)
{
int rez = 0;
while(x > 0)
{
int c = x % 10;
x = x / 10;
++ rez;
a[rez] = c;
}
return rez;
}
int main()
{
fin >> N >> P;
nr = calc(N);
dp[0][0] = 1;
reverse(a + 1, a + nr + 1);
for(i = 0; i < (1 << nr); i ++)
for(j = 0; j < P; j ++)
for(k = 0; k < nr; k ++)
if((i & (1 << k)) == 0)
dp[i | (1 << k)][(j * 10 + a[k + 1]) % P] += dp[i][j];
fout << dp[(1 << nr) - 1][0];
return 0;
}