上海计算机学会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.。代码如下。

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;
}
相关推荐
Fuyo_11192 分钟前
C++中的活字印刷术——模板·初阶
开发语言·c++·笔记
小白|3 分钟前
cmake:昇腾CANN构建系统完全指南
java·c++·算法
nebula-AI4 分钟前
人工智能导论:模型与算法(未来发展与趋势)
人工智能·神经网络·算法·机器学习·量子计算·automl·类脑计算
王老师青少年编程4 分钟前
2026年全国青少年信息素养大赛“算法应用主题赛”(初赛)【C++考点大纲】(全场景、组别):文末附备考秘籍!
c++·全国青少年信息素养大赛·初赛·2026年·算法应用主题赛·考点大纲
炽烈小老头5 分钟前
【每天学习一点算法 2026/05/21】课程表
学习·算法
Season4507 分钟前
C++之模板元编程(前置知识 constexpr)
开发语言·c++
luoganttcc9 分钟前
大模型是否即将到达算法极限
算法
咩咦27 分钟前
C++学习笔记22:前置后置 ++/-- 和日期减日期
c++·学习笔记·运算符重载·日期类·前置++·后置++·日期减日期
计算机安禾32 分钟前
【c++面向对象编程】第40篇:单例模式(Singleton)的多种C++实现
开发语言·c++·单例模式
叶小鸡37 分钟前
小鸡玩算法-力扣HOT100-动态规划(上)
算法·leetcode·动态规划