Tiger_machine(逆元)
***
https://ac.nowcoder.com/acm/contest/82401/C
***
标签: 数学
难度: 中等
思路:
数学期望,求出方案数,除以总数就是概率,再乘上权值,就是在处理分数取模时要使用逆元。
示例:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define MOD 998244353
ll qp(ll a,ll b,ll mod)
{
ll ans=1;
while(b)
{
if(b&1)ans=ans*a%MOD;
a=a*a%MOD;
b>>=1;
}
return ans;
}
ll iv(ll x,ll p=MOD)
{
return qp(x,p-2,p);
}
int T;
ll m,a,b,c;
int main()
{
cin>>T;
while(T--)
{
cin>>m>>a>>b>>c;
ll tot=m*m%MOD*m%MOD;
ll c1=3ll*m*(m-1)%MOD,c3=m;
ll ans=c1*b+c3*c+(tot-c1-c3)*a;
ans=(ans%MOD+MOD)%MOD;
ans=ans*iv(tot)%MOD;
cout<<ans<<endl;
}
return 0;
}
逆元模板:
ll qp(ll a,ll b,ll mod)
{
ll ans=1;
while(b)
{
if(b&1)ans=ans*a%MOD;
a=a*a%MOD;
b>>=1;
}
return ans;
}
ll iv(ll x,ll p=MOD)
{
return qp(x,p-2,p);
}