Cod sursa(job #520565)

Utilizator cat_red20Vasile Ioana cat_red20 Data 9 ianuarie 2011 15:54:47
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<stdio.h>
FILE *fin,*fout;
int t,d,r,k,f[4][5000001],i,v[3][10],nr,ok,j,p,exp;

int power(int a,int b){
	int nr=0;
	while(a%b==0){
		nr++;
		a=a/b;
	}
	return nr; 
}

int main(){
	fin=fopen("pascal.in","r");
	fout=fopen("pascal.out","w");
	fscanf(fin,"%d %d",&r,&d);
	k=2;
	t=d;
	p=0;
	while(k*k<=t){
		nr=0;
		while(t%k==0){
			t=t/k;
			nr++;
		}
		if(nr!=0){
			p++;
			v[1][p]=k;
			v[2][p]=nr;
		}
		k++;
	}
if(t!=1){
	p++;
	v[1][p]=t;
	v[2][p]=1;
}	

for(i=1;i<=r;i++){
	for(j=1;j<=p;j++){
		f[j][i]=f[j][i-1]+power(i,v[1][j]);
	}
}
nr=0;
for(i=1;i<=r;i++){
	ok=1;
	for(j=1;j<=p;j++){
		exp=f[j][r]-f[j][i]-f[j][r-i];
		if(exp<v[2][j]){
			ok=0;
			break;
		}
	}
	if(ok==1){nr++;}
}
fprintf(fout,"%d",nr);
return 0;}