Cod sursa(job #907282)

Utilizator veleanduAlex Velea veleandu Data 7 martie 2013 19:41:30
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
using namespace std;

int Nr[10],Ap[10],Exp[10];
int Ok[105];
int N,r,i,j,ok,rez;

int min( int a, int b ){
	if ( a < b )
		return a;
	return b;
}

void calc( int nr, int s ){
	int ind,exp,p;
	for( ind=0; ind<3; ++ind ){
		exp=Exp[ind];
		for( p=exp; p<=nr; p*=exp ){
			Ap[exp]+=s*nr/p;
		}
	}
}

int main(){
	freopen("pascal.in","r",stdin);
	freopen("pascal.out","w",stdout);
	Exp[0]=2;
	Exp[1]=3;
	Exp[2]=5;
	scanf("%d %d", &N, &r );
	if( r == 2 )
		Nr[2]=1;
	if( r == 3 )
		Nr[3]=1;
	if( r == 4 )
		Nr[2]=2;
	if( r == 5 )
		Nr[5]=1;
	if( r == 6 )
		Nr[2]=Nr[3]=1;
	for( i=1; i<=N-1 && i<=100; ++i ){
		calc( i,-1 );
		calc( N-i+1, +1 );
		ok=1;
		for( j=2; j<=5; ++j )
			if( Ap[j]<Nr[j] )
				ok=0;
		Ok[i]=ok;
	}
	rez=N+1;
	for( i=0; i<=min(100,(N+1)/2); ++i ){
		rez--;
		rez+=Ok[i];
	}
	j=0;
	for( i=N; i>(N+1)/2 && j<=100; i--,j++ ){
		rez--;
		rez+=Ok[j];
	}
	printf("%d\n",rez);
	return 0;
}