题面:厕所战神(真实故事改编),有n道题,m道没换的题,k次去厕所的机会,a道写了不会被怀疑的题,'k'题有l行代码,给出每次去厕所抄代码的行数和错误的可能性,求ac的问题数。
解析:题目中有较多无关数据,其中真正有用的是a和概率。k题能ac,即每次去厕所抄的代码都正确。
除法不能直接取模,用费马小定理求逆元。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,k,a,l;
const int mod=4933;
ll kpow2(ll a,ll b)
{
if(b==0) return 1;
if(b%2==1) return a*kpow2(a,b-1)%mod;
else {
ll t=kpow2(a,b/2);
return t*t%mod;
}
}//4933是质数,费马小定理求逆元inv=kpow2(t,mod-2)
ll p=1,ans=0;
int main(){
cin>>n>>m>>k>>a>>l;
for(int i=1;i<=k;i++){
cin>>x>>y>>z ;
if(y==0||x==0) continue;
y=z-y;
if(y==0){
p=0;
break;
}//注意细节
p=(p%mod*(y%mod)*(kpow2(z,mod-2)%mod))%mod;
}
ans=(a%mod+p)%mod;
cout<<ans<<endl;
}


京公网安备 11010502036488号