QWQ.qwq 2023-07-08 09:50 采纳率: 78.8%
浏览 98
已结题

C++基础题,OJ刷题

题目描述

在遥远的佐希克大陆,充满着宗教与魔法,每个人都信仰着一个宗教,信仰相同宗教的人两两之间会产生魔法心灵感应。
现在有N个人站成一排,第i个人信仰的宗教为Ai。现在请你求出,总共有多少对人会产生魔法感应。
输入

第一行一个整数N,表示接下来有N个人。
接下来N行,每行一个整数Ai,表示第i个人信仰的宗教为Ai。
1 <= N <= 1000000; 1 <= Ai <= 1000000;
输出

输出一个整数,表示总共会有多少对人,能够产生魔法感应
样例输入
10
3
2
5
4
2
6
1
3
5
2
样例输出
5
提示

样例中,N个人的信仰依次为 {3, 2, 5, 4, 2, 6, 1, 3, 5, 2}
1、8会产生魔法感应
2、5会产生魔法感应
3、9会产生魔法感应
5、10会产生魔法感应
2、10会产生魔法感应
共有5对人会产生魔法感应

#include <bits/stdc++.h>

using namespace std;
const int MAXN = 1000000;
int count[MAXN + 5];
int main() {
    int N;
    scanf("%d",&N);
    int ans = 0;

    for (int i = 0; i < N; i++) {
        int a;
        scanf("%d",&a);
        ans += count[a];
        count[a]++;
    }

    printf("%d",ans);

    return 0;
}

答案错误,11%,请问如何改正

  • 写回答

3条回答 默认 最新

  • 鱼弦 优质创作者: 编程框架技术领域 2023-07-08 10:01
    关注
    
    #include <iostream>
    #include <unordered_map>
    
    using namespace std;
    
    int main() {
        int N;
        cin >> N;
        unordered_map<int, int> count;
        int ans = 0;
    
        for (int i = 0; i < N; i++) {
            int a;
            cin >> a;
    
            ans += count[a];
            count[a]++;
        }
    
        cout << ans;
    
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月9日
  • 修改了问题 7月8日
  • 修改了问题 7月8日
  • 创建了问题 7月8日