Cod sursa(job #369307)

Utilizator alutzuAlexandru Stoica alutzu Data 27 noiembrie 2009 21:53:11
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>

long factor ( long n , long x ) 
{
	long e= 0L , p = x ;
	while ( n / p  )
	{
		e += n/p;
		p*=x;
	}
	return e ;
}
long fct ( long N , long x )
{
	long e = 0 ;
	if ( !N ) return 0 ;
	while ( N % x == 0 )
	{
		++e;
		N/=x;
	}
	return e ;
}
int main ( )
{
	
	freopen ( "pascal.in" , "r" , stdin ) ;
	freopen ( "pascal.out" , "w" , stdout ) ;
	
	long R , D , nrd , nrd1 , nrd2 , nrdiv = 0 , i ;
	
	scanf ( "%ld%ld" , & R , & D ) ;
	
	nrd = factor ( R , D ) ;
	nrd1 = 0L ;//factorial de i
	nrd2 = nrd;//factorial (R-i)
	for ( i=1 ; i < R ; ++ i )
	{
		nrd1 += fct ( i , D ) ;
		if ( nrd1 > nrd ) continue;
		nrd2 -= fct (R-i+1, D) ;
		if ( nrd1 + nrd2 >= nrd ) continue;
		++nrdiv;
	}
	
	printf ( "%d" , nrdiv ) ;
	
	return 0 ;
	
}