题目描述
在遥远的佐希克大陆,充满着宗教与魔法,每个人都信仰着一个宗教,信仰相同宗教的人两两之间会产生魔法心灵感应。
现在有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%,请问如何改正
#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;
}
不会也是要用 scanf 和 printf 吧?