Cod sursa(job #1348520)
Utilizator | Data | 19 februarie 2015 18:58:19 | |
---|---|---|---|
Problema | Pascal | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.76 kb |
#include <stdio.h>
int fact(int k,int n){
int put=0;
while(n/k>=1){
put+=n/k;
k*=k;
}
return put;
}
int main(){
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
int i,j,k,cate=0,p1,p2,p3,n;
scanf("%d%d",&i,&k);
n=i;
if(i%2==1)
n--;
if(k==2||k==3||k==5){
p1=fact(k,i);
for(j=1;j<=n/2;j++){
p2=fact(k,j);
p3=fact(k,i-j);
if(p1-p2-p3>=1){
if(j<n/2)
cate+=2;
else{
if(i%2==0)
cate++;
else
cate+=2;
}
}
}
}
if(k==4){
k=2;
p1=fact(k,i);
for(j=1;j<=n/2;j++){
p2=fact(k,j);
p3=fact(k,i-j);
if(p1-p2-p3>=2){
if(j<n/2)
cate+=2;
else{
if(i%2==0)
cate++;
else
cate+=2;
}
}
}
}
if(k==6){
for(j=1;j<=n/2;j++){
p1=fact(3,i);
p2=fact(3,j);
p3=fact(3,i-j);
if(p1-p2-p3>=1){
p1=fact(2,i);
p2=fact(2,j);
p3=fact(2,i-j);
if(p1-p2-p3>=1){
if(j<n/2)
cate+=2;
else{
if(i%2==0)
cate++;
else
cate+=2;
}
}
}
}
}
printf("%d",cate);
return 0;
}