|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 柿子饼同学 于 2022-7-18 22:26 编辑
这道题通过余数的方法 , 但是为什么要记录出现的次数很不解 , 求解答, 下面有题解代码
输入输出 :
- 10
- B 2
- E 5
- S 7
- I 10
- O 16
- M 19
- B 3
- G 1
- I 9
- M 2
复制代码
解释: n<=500,赋值的数字∈[-1e5,1e5]
样例解释:
(B,E,S,I,G,O,M)=(2, 5, 7, 9, 1, 16, 19)=(2, 5, 7, 9, 1, 16, 2)
题解 :- #include <bits/stdc++.h>
- #define int long long
- using namespace std;
- int m[500][7],n,ans;
- signed main() {
- cin >> n;
- for(int i=1; i<=n; i++) {
- char c; int v;
- cin >> c >> v;
- m[c][(v%7+7)%7]++;
- }
- for(int B=0; B<7; B++)
- for(int E=0; E<7; E++)
- for(int G=0; G<7; G++)
- for(int I=0; I<7; I++)
- for(int M=0; M<7; M++)
- for(int O=0; O<7; O++)
- for(int S=0; S<7; S++)
- if(((B+E+S+S+I+E)*(G+O+E+S)*(M+O+O))%7==0)
- ans+=m['B'][B]*m['E'][E]*m['G'][G]*m['I'][I]*m['M'][M]*m['O'][O]*m['S'][S];
- cout << ans << endl;
- return 0;
- }
复制代码
求解 |
|