小A的彩票

在这里插入图片描述
模拟+递推求解

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<set>
#include<vector>
#include<string>
using namespace std;

typedef long long ll;
const int N=1e6+10;
const int INF=1000000007;
const double eps=0.0000001;
long long f[50][200];//f[i][j]表示买第i张彩票,获得j元的情况数

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    f[0][0]=1;
    for(int i=1;i<=n;i++)//递推
    {
        for(int j=1;j<=4*i;j++)
        {
            f[i][j]+=f[i-1][j-1];
            if(j>=2) f[i][j]+=f[i-1][j-2];
            if(j>=3) f[i][j]+=f[i-1][j-3];
            if(j>=4) f[i][j]+=f[i-1][j-4];
        }
    }
    long long sum=0,p=1;
    for(int i=1;i<=n;i++) p*=4;
    for(int i=n*3;i<=n*4;i++) sum+=f[n][i];
    long long gcd=__gcd(sum,p);
    cout<<sum/gcd<<"/"<<p/gcd<<endl;
}


猜你喜欢

转载自blog.csdn.net/weixin_43870114/article/details/89278193