Pagini recente » Cod sursa (job #1466696) | Cod sursa (job #822641) | Cod sursa (job #3003019) | Cod sursa (job #1638522) | Cod sursa (job #65519)
Cod sursa(job #65519)
#include<stdio.h>
int r,d,i,n,nr,p1,p2,put1,put2;
int main(){
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d %d",&r,&d);
if((d==2)||(d==3)||(d==5)){
for(i=0;i<(r+1)/2-1;i++){
n=r-i;
p1=0;
while(n%d==0){
p1++;
n/=d;
}
n=i+1;
while(n%d==0){
p1--;
n/=d;
}
put1+=p1;
if(put1>0)
nr+=2;
}
if(r%2==0){
n=r-i;
p1=0;
while(n%d==0){
p1++;
n/=d;
}
n=i+1;
while(n%d==0){
p1--;
n/=d;
}
put1+=p1;
if(put1>0)
nr++;
}
}
if(d==4){
for(i=0;i<(r+1)/2-1;i++){
n=r-i;
p1=0;
while((n&1)==0){
n>>=1;
p1++;
}
n=i+1;
while((n&1)==0){
n>>=1;
p1--;
}
put1+=p1;
if(put1>1)
nr+=2;
}
if(r%2==0){
n=r-i;
p1=0;
while((n&1)==0){
n>>=1;
p1++;
}
n=i+1;
while((n&1)==0){
n>>=1;
p1--;
}
put1+=p1;
if(put1>1)
nr++;
}
}
if(d==6){
for(i=0;i<(r+1)/2-1;i++){
n=r-i;
p1=p2=0;
while((n&1)==0){
n>>=1;
p1++;
}
while(n%3==0){
n/=3;
p2++;
}
n=i+1;
while((n&1)==0){
n>>=1;
p1--;
}
while(n%3==0){
n/=3;
p2--;
}
put1+=p1;
put2+=p2;
if((put1>0)&&(put2>0))
nr+=2;
}
if(r%2==0){
n=r-i;
p1=p2=0;
while((n&1)==0){
n>>=1;
p1++;
}
while(n%3==0){
n/=3;
p2++;
}
n=i+1;
while((n&1)==0){
n>>=1;
p1--;
}
while(n%3==0){
n/=3;
p2--;
}
put1+=p1;
put2+=p2;
if((put1>0)&&(put2>0))
nr++;
}
}
printf("%d\n",nr);
return 0;
}