模拟+递推求解
#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;
}