UVA-10759

题意:

       n个骰子点数之和大于等于x的概率为多少。

题解:

      这道题第一眼看上去就是DP。思路很简单,DP[n][x]表示n个筛子点数恰好为x的情况数。

DP[n][x] = DP[n-1][x-1] + DP[n-1][x-2] +DP[n-1][x-3] + DP[n-1][x-4] +  DP[n-1][x-5] + DP[n-1][x-6] 

#include <bits/stdc++.h>  
using namespace std;
long long gcd(long long a, long long b)
{
	return b == 0 ? a : gcd(b, a % b);
}
int main()
{
	long long DP[30][160] = { 0 };
	for (int x = 1; x < 160; x++)DP[0][x] = x;
	for (int x = 1; x <= 6; x++)DP[1][x] = 1;
	for (int n = 2; n <= 24; n++) for (int x = 1; x <= 150; x++)
		for (int k = 1; k <= 6; k++) if (x - k >= 1)	DP[n][x] += DP[n - 1][x - k];
	int n, x;
	while (cin >> n >> x, n)
	{
		cout << fixed;
		long long lt = 0;  for (int i = x; i <= 150; i++) lt += DP[n][i];
		long long tt = pow(6, n);
		long long g = gcd(lt, tt);
		lt /= g;    tt /= g;
		if (lt == 0 || tt == 1) cout << lt << endl;
		else  cout << lt <<"/"<<tt<< endl;

	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值