Cod sursa(job #497375)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 2 noiembrie 2010 12:38:39
Problema Ratphu Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>

long long n,nr;
int p,nrc,v[20],st[20],sumac;

long long fact(int x){
long long f=1;
int i;
for(i=1;i<=x;++i) f*=i;
return f;
}

void det_cifre(long long x){
while(x){
	v[++nrc]=x%10; x/=10;
	}
}


int main(){
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
int pare=0,i,j,k,impare=0,n5=0,n0=0,z;
scanf("%lld%d",&n,&p);
det_cifre(n);
for(i=1;i<=nrc;++i){
	impare+=v[i]&1,sumac+=v[i];
	n5+=v[i]==5,n0+=v[i]==0;
	}
pare=nrc-impare;
switch(p){
//case 1: nr=fact(nrc);break;
case 2: nr=pare*fact(nrc-1);break;
case 3: if(sumac%3==0) nr=fact(nrc);break;
case 4: k=0;
		for(i=1;i<=nrc;++i)
			for(j=1;j<=nrc;++j)
				if(i!=j){
					z=v[i]*10+v[j];
					if(z%4==0) ++k;
					}
		nr=k*fact(nrc-2);break;
case 5: nr=(n5+n0)*fact(nrc-1); break;
case 6: if(sumac%3==0) nr=pare*fact(nrc-1);break;
case 9: if(sumac%9==0) nr=fact(nrc);break;
case 10: nr=n0*fact(nrc-1);break;

}
printf("%lld",nr);
return 0;
}