题目描述
三倍游戏是一种单人游戏。玩家会得到 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.。代码如下。
cpp
#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;
}