我刚开始还没读懂这个题是个什么意思,后来队友给我解释了一下,我才理解这题什么意思(感觉归根结底就是排列组合没有学好);
这道题初读题意,就是高中的独立事件求方案,就相当与选人,说到选人就应该知道用组合排列了;
因为题目上说了必须要有两个拍子,一个求才能玩,所以我可以把拍子简写为r,球写为o,x表示两个都没有的学生人数;
所以我可以知道:
(补充一个知识点:)
所有情况相加:
可化简:
然后AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define Mod 998244353
//ll gcd(ll a,ll b){
// return b?gcd(b,a%b):a;
//}
ll QP(ll x,ll n){
ll res=1;
while(n){
if(n&1){
res=(res*x)%Mod;
}
x=(x*x)%Mod;
n>>=1;
}
return res;
}
int main(){
ll T;
scanf("%lld",&T);
ll a,b,c,d;
while(T--){
scanf("%lld %lld %lld %lld",&a,&b,&c,&d);
ll ans=((1+b+d)%Mod*QP(2,c)%Mod+QP(2,b)%Mod-(1+b)%Mod)%Mod*QP(2,a)%Mod;
printf("%lld\n",ans);
}
return 0;
}