View Code of Problem 1057

#include<math>
#include<set>
#include<list>
#include<cmath>
#include<ctime>
#include<deque>
#include<stack>
#include<bitset>
#include<cstdio>
#include<vector>
#include<cstdlib>
#include<cstring>
#include<iomanip>
#include<numeric>
#include<sstream>
#include<utility>
#include<iostream>
#include<algorithm>
#include<functional>

using namespace std ;
long long sum , ans , dp[ 30 ][ 155 ] ;
int n , m ;
long long Gcd( long long a , long long b )
{
	return b == 0 ? a : Gcd( b , a % b ) ;
}
int main()
{

	while( scanf( "%d%d" , &n , &m ) != EOF  ) 
	{
		if( !n && !m ) 
			break ;
		if( n * 6 < m )
		{
			printf( "0\n" ) ;
		}
		else if( n >= m )
		{
			printf( "1\n" ) ;
		}
		else
		{
			sum = pow( 6 , n ) ;
			memset( dp , 0 , sizeof( dp ) ) ;
			for( int i = 0 ; i <= 6 ; ++i )
				dp[ 0 ][ i ] = 1 ;
			for( int i = 0 ; i < n - 1 ; ++i )
			{
				for( int j = 1 ; j <= ( i + 1 ) * 6 ; ++j )
				{
					for( int k = 1 ; k <= 6 ; ++k )
					{
						dp[ i + 1 ][ j + k ] += dp[ i ][ j ] ;
					}
				//	cout << dp[ i ][ j ] << endl ;
				}
			}
			ans = 0 ;
			for( int i = m ; i <= n * 6 ; ++i )
			{
				ans = ans + dp[ n - 1 ][ i ] ;
			//	cout << ans << endl ;
			}
		//	cout << ans << endl ;
			long long gcd = Gcd( ans , sum ) ;	
		//	cout << ans << " " << sum << endl ;
		//	cout << gcd << endl ;
			printf( "%lld/%lld\n" , ans / gcd , sum / gcd ) ;
		}
	} 
    return 0;
}

/*
F:\temp\16139719.54736\Main.cc:2:15: error: math: No such file or directory
*/

Double click to view unformatted code.


Back to problem 1057