Cod sursa(job #177309)
Utilizator | Data | 12 aprilie 2008 17:38:06 | |
---|---|---|---|
Problema | Pascal | Scor | 70 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 1.75 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;
}
}
printf("%d",nr);
return 0;
}