Pagini recente » Cod sursa (job #213998) | Cod sursa (job #2494500) | Borderou de evaluare (job #233485) | Cod sursa (job #2538195) | Cod sursa (job #465707)
Cod sursa(job #465707)
#include <cstdio>
#define FIN "ratphu.in"
#define FOUT "ratphu.out"
#define MAXC 20
int P, V[MAXC];
long long R, N;
void parse(long long X)
{
int i;
for (i = 1; X; ++ i) V[i] = X % 10, X /= 10;
V[0] = i - 1;
}
long long fact(int X)
{
int i;
long long A = 1;
for (i = 1; i <= X; ++ i) A = 1LL * A * i;
return A;
}
void solve()
{
int i, j;
parse(N);
if (P == 2)
{
for (i = 1, j = 0; i <= V[0]; ++ i)
if (V[i] % 2 == 0)
++ j;
R = 1LL * j * fact(V[0] - 1);
return;
}
if (P == 3)
{
for (i = 1, j = 0; i <= V[0]; ++ i)
j += V[i];
if (!(j % 3))
{
R = fact(V[0]);
return;
}
}
if (P == 5)
{
for (i = 1, j = 0; i <= V[0]; ++ i)
if (V[i] == 5 || V[i] == 0)
++ j;
R = 1LL * j * fact(V[0] - 1);
return;
}
}
int main()
{
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%I64d", &N);
scanf("%d", &P);
solve();
printf("%I64d\n", R);
}