Pagini recente » Cod sursa (job #1090945) | Cod sursa (job #2361053) | Cod sursa (job #939095) | Cod sursa (job #2185958) | Cod sursa (job #465844)
Cod sursa(job #465844)
#include<stdio.h>
int c[20];
long fact(int a)
{
long s=1,i;
for(i=2;i<=a;i++)
s=s*i;
return s;
}
long permut(int p)
{
int i,s=0;
if(p==3)
{
for(i=1;i<=c[0];i++)
s=s+c[i];
if(s%3==0)
return fact(c[0]);
else
return 0;
}
if(p==2)
{
for(i=1;i<=c[0];i++)
if(c[i]%2==0)
s++;
return fact(c[0]-1)*s;
}
if(p==5)
{
for(i=1;i<=c[0];i++)
if(c[i]%5==0)
s++;
return s*fact(c[0]-1);
}
if(p%3==0)
{
for(i=1;i<=c[0];i++)
s=s+c[i];
if(s%3==0)
return permut(p/3);
else
return 0;
}
if(p%2==0)
return 3*permut(p/2);
return 0;
}
int main()
{
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
long long n,cn;
int p,i;
long r,s;
scanf("%lld%d",&n,&p);
cn=n;
do
{
c[++c[0]]=n%10;
n=n/10;
}while(n!=0);
if(p==11)
{
s=0;
for(i=1;i<=c[0];i++)
s=s+c[i];
if(s%11==0)
printf("%ld\n",fact(c[0]));
else
printf("0\n");
return 0;
}
if(p==1)
{
printf("%ld\n",fact(c[0]));
return 0;
}
if(p==17)
{
if(cn%17==0)
printf("48\n");
else
printf("1\n");
}
r=permut(p);
printf("%ld",r);
return 0;
}