Pagini recente » Cod sursa (job #379205) | Cod sursa (job #2611338) | Cod sursa (job #2295081) | Cod sursa (job #2883870) | Cod sursa (job #465703)
Cod sursa(job #465703)
#include<stdio.h>
#define infile "ratphu.in"
#define outfile "ratphu.out"
long a[25],p,vid[25];
unsigned long long s,q,n,nr;
long long factorial(long n)
{
long i,q=1;
for(i=1;i<=n;i++)
q*=i;
return q;
}
void read()
{
long i=0;
scanf("%llu",&n);
while(n!=0)
{
i++;
a[i]=n%10;
n=n/10;
}
a[0]=i;
scanf("%ld",&p);
}
void bk(long w)
{
long i;
if((w==a[0]+1)&&(nr%p==0))
s++;
else
{
for(i=1;i<=a[0];i++)
if(vid[i]==0)
{
nr=nr*10+a[i];
vid[i]=1;
bk(w+1);
nr=nr/10;
vid[i]=0;
}
}
}
void solve()
{
long ok,i,j;
//long long s,q;
long c[25];
ok=1;
if(p==1)
{
q=factorial(a[0]);
printf("%llu\n",q);
ok=0;
}
if(p==2)
{
s=0;
ok=0;
q=factorial(a[0]-1);
for(i=1;i<=a[0];i++)
if(a[i]%2==0)
s+=q;
printf("%llu\n",s);
}
if((p==3)||(p==9))
{
s=0;q=1;
ok=0;
for(i=1;i<=a[0];i++)
{
s+=a[i];
q*=i;
}
if(s%p==0)
printf("%llu\n",q);
}
if(p==4)
{
q=factorial(a[0]-2);
j=0;
ok=0;
for(i=1;i<=a[0];i++)
if(a[i]%2==0)
{
j++;
c[j]=a[i];
}
c[0]=j;
for(i=1;i<c[0];i++)
for(j=i+1;j<=c[0];j++)
{
if((c[i]*10+c[j])%4==0)
s+=q;
}
printf("%llu",q);
}
if(p==5)
{
//s=0;
ok=0;
q=factorial(a[0]-1);
for(i=1;i<=a[0];i++)
if(a[i]==5)
s+=q;
printf("%llu\n",s);
}
if(p==6)
{
//s=0;
nr=0;
ok=0;
q=factorial(a[0]-1);
for(i=1;i<=a[0];i++)
{
if(a[i]%2==0)
nr++;
s+=a[i];
}
if(s%3==0)
s=nr*q;
printf("%llu\n",s);
}
if(p==10)
{
//s=0;
ok=0;
q=factorial(a[0]-1);
for(i=1;i<=a[0];i++)
if(a[i]==0)
s+=q;
printf("%llu\n",s);
}
if(ok==1)
{
bk(1);
printf("%llu\n",s);
}
}
int main()
{
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);
read();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}