Cod sursa(job #177321)
Utilizator | Data | 12 aprilie 2008 17:48:13 | |
---|---|---|---|
Problema | Pascal | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 2.97 kb |
#include <stdio.h>
int n,d,i,j,k,m,t,nr;
int main(){
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d %d",&n,&d);
if (n<=1) {printf("0");
return 0;}
m=(n-1)/2;
if (d==2 || d==3 || d==5){
k=0;
for (i=1;i<=m;++i){
j=n-i+1;t=0;
while (j%d==0) {++t;
j/=d;}
j=i;
while (j%d==0) {--t;
j/=d;}
k+=t;
if (k>0) ++nr;
}
nr*=2;
if (n%2==0) {
j=n/2+1;t=0;
while (j%d==0) {++t;
j/=d;}
j=n/2;
while (j%d==0) {t--;
j/=d;}
k=+t;
if (k>0) ++nr;
}
}
else
if (d==4){
k=0;
for (i=1;i<=m;++i){
j=n-i+1;t=0;
while (j%2==0) {++t;
j/=2;}
j=i;
while (j%2==0) {--t;
j/=2;}
k+=t;
if (k>1) ++nr;
}
nr*=2;
if (n%2==0) {
j=n/2+1;t=0;
while (j%2==0) {++t;
j/=2;}
j=n/2;
while (j%2==0) {t--;
j/=2;}
k+=t;
if (k>1) ++nr;
}
}
else{
int k2=0,k3=0;
for (i=1;i<=m;++i){
j=n-i+1;t=0;
while (j%2==0) {++t;
j/=2;}
j=i;
while (j%2==0) {--t;
j/=2;}
k2+=t;
t=0;
j=n-i+1;
while (j%3==0) {++t;
j/=3;}
j=i;
while (j%3==0) {--t;
j/=3;}
k3+=t;
if (k2>0 && k3>0) ++nr;
}
nr*=2;
if (n%2==0) {
j=n/2+1;t=0;
while (j%2==0) {++t;
j/=2;}
j=n/2;
while (j%2==0) {--t;
j/=2;}
k2+=t;
t=0;j=n/2+1;
while (j%3==0) {++t;
j/=3;}
j=n/2;
while (j%3==0) {--t;
j/=3;}
k3+=t;
if (k2>0 && k3>0) ++nr;
}
}
printf("%d",nr);
return 0;
}