Cod sursa(job #65516)

Utilizator swift90Ionut Bogdanescu swift90 Data 10 iunie 2007 15:19:24
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#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++;
		}
	}
	
	printf("%d\n",nr);
	return 0;
}