思路分析
一道很有洛谷个性的模拟签到题。
按照题意,我们只需读入 \(a,b,c,d,e\),然后对其进行求和,然后依次根据 洛谷咕值系统介绍 进行判断即可。
这样是不是太没有意思了?今天为大家带来一点干货作为福利!
介绍:accumulate()
函数!
简略分析:这个函数可以求出一段区间内的数字之和。
STL 中的实现是这样的:
template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
_GLIBCXX20_CONSTEXPR
inline _Tp
accumulate(_InputIterator __first, _InputIterator __last, _Tp __init,
_BinaryOperation __binary_op) {
// concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
__glibcxx_requires_valid_range(__first, __last);
for (; __first != __last; ++__first)
__init = __binary_op(_GLIBCXX_MOVE_IF_20(__init), *__first);
return __init;
}
简单来说,第一个参数表示区间开头的迭代器/指针,第二个参数表示区间末尾下一位的迭代器/指针,第三个参数为累加初值。
代码实现
#include <bits/stdc++.h>
using namespace std;
int a[5], sum;
int main() {
for (auto &x : a) cin >> x; // 读入
sum = accumulate(a, a + 5, 0); // 求和
if (sum < 100) cout << "Gray";
else if (sum < 120) cout << "Blue";
// 更严谨的话这里应该写为100<=sum&&sum<120,但是由于前一个条件已经在前面做了判断,所以这里不需要再加上了
else if (sum < 170) cout << "Green";
else if (sum < 230) cout << "Orange";
else cout << "Red";
return 0;
}
标签:__,P9516,last,题解,sum,init,accumulate,first
From: https://www.cnblogs.com/IShallReturn/p/17691112.html