小A买彩票 image-20240430004133242 cf没做出来,跑过来写道牛客 123456dp[i][j]表示前i张彩票中奖j元的方案数那么易得转移方程dp[i][j] += dp[i-1][j-k] 其中1≤k≤4 k≤j边界为dp[0][0]买n张彩票,每张彩票有四种情况,总的方案数就是sum=4^n计算出来ans=sum(dp[n][k]) 其中k>=3n 代码如下: 123456789101112131415161718192021#include<bits/stdc++.h>using namespace std;typedef long long ll;ll dp[35][150];///对于前i张中奖j元的方案数int main(){ ll n;cin>>n; dp[0][0]=1; for(int i=1;i<=n;i++){ for(int j=1;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]; } } ll ans=0; for(int i=3*n;i<=4*n;i++) ans += dp[n][i]; ll sum=((ll)1<<(n<<1)); cout<<ans/__gcd(ans,sum)<<"/"<<sum/__gcd(ans,sum)<<endl; return 0;}