Pagini recente » Cod sursa (job #2818711) | Cod sursa (job #2342688) | Cod sursa (job #2937017) | Cod sursa (job #997896) | Cod sursa (job #465793)
Cod sursa(job #465793)
#include <fstream>
using namespace std;
unsigned long long x;
int n,a[20],p,k,k2,comb0;
unsigned long long factorial(int x)
{
int i;
unsigned long long sol=1;
for(i=1;i<=x;i++)
sol*=i;
return sol;
}
int main()
{
int i;
ifstream fi("ratphu.in");
ofstream fo("ratphu.out");
fi>>x;
n=0;
while(x!=0)
{
a[++n]=x%10;
x/=10;
}
fi>>p;
if(p==1) {fo<<factorial(n); }
if(p==2)
{
k=0;
for(i=1;i<=n;i++)
if(a[i]%2==0) k++;
fo<<k*factorial(n-1);
}
if(p==3)
{
k=0;
for(i=1;i<=n;i++) k+=a[i];
if(k%3==0) fo<<factorial(n);
else fo<<0;
}
if(p==5)
{
k=0;
for(i=1;i<=n;i++) if((a[i]==0)||(a[i]==5)) k++;
fo<<k*factorial(n-1);
}
if(p==6)
{
k=0;
for(i=1;i<=n;i++) k+=a[i];
if(k%3==0)
{
k=0;
for(i=1;i<=n;i++)
if(a[i]%2==0) k++;
fo<<k*factorial(n-1);
} else fo<<0;
}
if(p==9)
{
k=0;
for(i=1;i<=n;i++) k+=a[i];
if(k%9==0) fo<<factorial(n);
else fo<<0;
}
if(p==18)
{
k=0;
for(i=1;i<=n;i++) k+=a[i];
if(k%9==0)
{
k=0;
for(i=1;i<=n;i++)
if(a[i]%2==0) k++;
fo<<k*factorial(n-1);
}
else fo<<0;
}
if(p==10)
{
k=0;
for(i=1;i<=n;i++)
if(a[i]==0) k++;
fo<<k*factorial(n-1);
}
if(p==20)
{
k=0; k2=0;
for(i=1;i<=n;i++)
if(a[i]==0) k++;
if(k==1) comb0=0; else {
comb0=factorial(k)/factorial(k-2);
comb0/=2; }
for(i=1;i<=n;i++)
if((a[i]%2==0)&&(a[i]!=0)) k2+=k;
k2+=comb0;
fo<<k2*factorial(n-2);
}
if(p==15)
{
k=0;
for(i=1;i<=n;i++) k+=a[i];
if(k%3==0)
{
k=0;
for(i=1;i<=n;i++) if((a[i]==0)||(a[i]==5)) k++;
fo<<k*factorial(n-1);
} else fo<<0;
}
return 0;
}