表达式求值
本帖最后由 柿子饼同学 于 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
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,n,ans;
signed main() {
cin >> n;
for(int i=1; i<=n; i++) {
char c; int v;
cin >> c >> v;
m[(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']*m['E']*m['G']*m['I']*m['M']*m['O']*m['S'];
cout << ans << endl;
return 0;
}
求解 {:10_266:} {:10_256:} {:10_257:} {:10_257:} 看不懂{:10_266:}{:10_266:} {:10_249:} 你好像理解错了
页:
[1]