P9516 题解

思路分析

一道很有洛谷个性的模拟签到题。

按照题意,我们只需读入 \(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;
}
posted @ 2023-09-10 13:46  群星之路  阅读(64)  评论(0)    收藏  举报