本文主要是介绍上海计算机学会2021年1月月赛C++丙组T4三倍游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
三倍游戏是一种单人游戏。玩家会得到 n 个整数a1,a2,…,an。玩家从这些整数中挑出两个数字相加,如果它们的和是 3 的倍数,则可以将这两个整数消除,如此反复,直到不能再消除数字为止。
请问玩家最多能消除多少对数字?
输入格式
第一行:单个整数 n;
第二行:n 个整数a1,a2,⋯,an。
输出格式
单个整数表示答案。
数据范围
- 1≤ai≤1,000,000;
- 对于 50%50% 的数据,1≤n≤1000;
- 对于 100%100% 的数据,1≤n≤100000。
样例数据
输入:
4
1 3 3 2
输出:
2
输入:
6
1 1 1 1 1 1
输出:
0
说明:
无法消除
解析
本题关键点:两数之和是3的倍数,分2种情况分析:一是2个都是3的倍数,二是其中一个是3的倍数+1,另一个是3的倍数+2.。代码如下。
#include <iostream>
using namespace std;
int n,x,ans;
int a[3];
int main() {cin >> n;for(int i = 1; i <= n; i++) {cin >> x;a[x % 3]++;}ans = a[0] / 2 + min(a[1], a[2]);cout<<ans<<endl;return 0;
}
这篇关于上海计算机学会2021年1月月赛C++丙组T4三倍游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!