思路:
暴力枚举
枚举我方前四个选手,第五个可以推出来,我方ban和对面选和ban可以直接组合数算出来
ac代码:
//暴力枚举 #include<bits/stdc++.h> using namespace std; #define sf(x) scanf("%lld",&x) #define sff(x,y) scanf("%lld%lld",&x,&y) #define endl '\n' #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) #define pf(x) printf("%lld",x) #define pii pair<int,int> #define f first //#define s second #define int long long // int p=1000000007; // int caozuo() { int t1,t2,t3; t1=(95ll*94ll*93ll*92ll*91ll)%p; t2=(90ll*89ll*88ll*87ll*86ll)/(5ll*4ll*3ll*2ll*1ll); t2%=p; t3=(85ll*84ll*83ll*82ll*81ll)/(5ll*4ll*3ll*2ll*1ll); t3%=p; return t1*t2%p*t3%p; } // void solve() { int d=caozuo(); // d%=p; // cout<<d<<endl; string s[5]; while(cin>>s[0]>>s[1]>>s[2]>>s[3]>>s[4]) { vector<int> st(110); int cnt=0; for(int i=0;i<100;i++) if(s[4][i]-'0') st[i]=1,cnt++; int res=0; for(int i=0;i<100;i++) { if(s[0][i]!='1') continue; for(int j=0;j<100;j++) { if(s[1][j]!='1') continue; if(i==j) continue; for(int k=0;k<100;k++) { if(s[2][k]!='1') continue; if(i==k||j==k) continue; for(int u=0;u<100;u++) { if(i==u||j==u||k==u) continue; if(s[3][u]!='1')continue; int sum=cnt; if(st[i]) sum--; if(st[j]) sum--; if(st[k]) sum--; if(st[u]) sum--; res=(res+(sum*d%p))%p; } } } } cout<<res<<endl; } } signed main() { IOS; int _=1; // cin>>_; while(_--) solve(); return 0; }
2017 ACM-ICPC Asia Xi‘an Regional Contest J - LOL
于 2024-07-31 22:46:42 首次发布