You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeforces 228A题测试用例19返回Wrong Answer问题求助

问题分析与修复

错误原因

你的代码核心逻辑存在偏差:你统计的是数组中两两相等的元素对数,而非需要替换的重复元素数量。
当某一个颜色出现k次时:

  • 实际需要替换的数量为 k-1,总购买量为 4 - 不同颜色总数
  • 你的代码会统计出 k*(k-1)/2 次相等配对,直接作为结果输出会导致数值偏大
    以出错的第19个测试用例147784432 947653080 947653080 947653080为例:
  • 不同颜色总数为2,正确答案是 4-2=2
  • 你的代码统计到3次相等配对,因此错误输出3

修复方案

方案1:使用set自动去重(代码简洁易读)

#include <iostream>
#include <set>
using namespace std;
int main()
{
    set<int> colors;
    int tmp;
    for (int i = 0; i < 4; ++i) {
        cin >> tmp;
        colors.insert(tmp);
    }
    cout << 4 - colors.size();
    return 0;
}

方案2:手动统计(无需引入额外STL容器)

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int input[4];
    for (int i = 0; i < 4; ++i) {
        cin >> input[i];
    }
    sort(input, input + 4);
    int diff_cnt = 1;
    for (int i = 1; i < 4; ++i) {
        if (input[i] != input[i-1]) diff_cnt++;
    }
    cout << 4 - diff_cnt;
    return 0;
}

内容的提问来源于stack exchange,提问作者user13408251

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:48:02