【每日一题】小A买彩票

小A买彩票

https://ac.nowcoder.com/acm/problem/23413

题目

已知购买一张彩票需要 3 元,而彩票中奖的金额分别为 1、2、3、4 元,并且比较独特的是这个彩票中奖的各种金额都是等可能的。
现在小A连续购买了 n 张彩票,求至少能够不亏本的概率是多少。

解题思路

动态规划:

表示购买了 张彩票并得到 元金额的方法数目。
状态转移方程为:
不亏本的数目总数为
所有方法的总数为
返回

C++代码

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
    long long n;
    cin >> n;
    vector<vector<long long>> dp(n+1, vector<long long>(4*n+1,0));
    dp[0][0] = 1;
    for(int i=1; i<=n; ++i){
        for(int j=i; j<=4*i; ++j){
            if(j>=1)
                dp[i][j] += dp[i-1][j-1];
            if(j>=2)
                dp[i][j] += dp[i-1][j-2];
            if(j>=3)
                dp[i][j] += dp[i-1][j-3];
            if(j>=4)
                dp[i][j] += dp[i-1][j-4];
        }
    }
    long long cnt = 0;
    for(int j=3*n; j<=4*n; ++j)
        cnt += dp[n][j];
    long long total = pow(4LL,n);
    long long k = __gcd(cnt, total);
    long long a = cnt / k;
    long long b = total / k;
    cout << a << "/" << b << endl;
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务