题目描述
三倍游戏是一个单人游玩的益智游戏。玩家会随机得到 n 张卡片,每张卡片上写有数字,第 i 张卡片上的数字为 ai。每一轮游戏,玩家需要取走两张卡片,这两张卡片的数字之和需要为 3 的倍数,被选出的卡片不再放回原卡片堆中。
给定卡片数量 n 及每张卡片上的数字 a1,a2,⋯,an,请求这个游戏最多可以进行多少轮。
输入
第一行:单个正整数 n;
第二行:n 个正整数 a1,a2,⋯,an。
输出
单个自然数:表示答案。
样例输入
【样例1】 4 1 3 3 2 【样例2】 6 1 2 3 4 5 6
样例输出
【样例1】 2 【样例2】 3
代码如下
#include<iostream>
using namespace std;
int n, t, a = 0, b = 0, c = 0, sum = 0;
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> t;
if (t % 3 == 0) // 3,6,9....
{
a++;
}
else if (t % 3 == 1) // 1,4,7....
{
b++;
}
else // 2,5,8....
{
c++;
}
sum = a / 2; // 假如有两个3的倍数,就是一轮,一个三的倍数,就是零轮
if (b < c) // 比如有1,4,7,2,5,配对肯定配对多的
{
sum += b;
}
else
{
sum += c;
}
}
cout << sum;
return 0;
}