题面:厕所战神(真实故事改编),有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; }