A,B 打牌(牌的数量为偶数), 计算A赢 B赢 平局的方案数
如果A赢
1.A获得最大的牌,
2.A没有最大的牌,但如果有 n-1 的牌,逼B交n的牌,也可能赢,
>>>>>
f[n][0]= c(n-1,n/2-1) +f[n-2][1]
#include <iostream>
using namespace std;
const int M=100,N=100;
#define int long long
const int mod=998244353 ;
int c[N][N];
void init(){
int i,j;
c[1][1]=1;
for(i=0;i<=M;i++) c[i][0]=1;
for(i=2;i<=M;i++)
for(j=1;j<=i;j++)
c[i][j]=(c[i-1][j]+c[i-1][j-1]);
}
int n,f[N][2];
main(){
int i,j,cas;
init();
f[2][0]=1; f[2][1]=0;
for(i=4;i<=100;i++){
f[i][0]=c[i-1][i/2-1]+f[i-2][1];
f[i][1]=c[i][i/2]-f[i][0]-1;
f[i][0]%=mod,f[i][1]%=mod;
}
cin>>cas;
while(cas--)
cin>>n,cout<<f[n][0]<<' '<<f[n][1]<<' '<<1<<endl;
}
方案数.