

Bài 3 (5 điểm). Đếm cặp số bằng nhau
Trong buổi đồng diễn thể dục thể thao của trường gồm có n bạn được đánh số theo thứ tự từ 1 đến n, mỗi bạn có chiều cao tương ứng là a1, a2, …, an.
Yêu cầu: Em hãy lập trình đếm xem có bao nhiêu cặp đôi có chiều cao bằng nhau. Nếu bạn ở vị trí i và bạn ở vị trí j có ai = aj, trong đó (ai, aj) và (aj, ai) chỉ được tính một cặp.
Dữ liệu: vào từ file DEMCAP.INP gồm:
Kết quả: ghi ra file văn bản DEMCAP.OUT là số nguyên xác định số lượng các cặp số bằng nhau
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/stdc++.h>
using namespace std;
int n,a[100005],d=0;
map<int,long long>b;
int main() {
cin>>n;
for(int i=1;i<=n;i++){cin>>a[i];b[a[i]]++;}
for(int i=1;i<=n;i++){
if(b[a[i]]>1){d=d+b[a[i]]*(b[a[i]]-1)/2;b[a[i]]=0;}
}cout<<d;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
unordered_map<int,int> a;
for (int i=0;i<n;i++) {
int b;
cin>>b;
a[b]++;
}
int t=0;
for (const auto& p:a) {
int m=p.second;
if (m>1) {
t+=(m*(m-1))/2;
}
}
cout<<t;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
Bảng tin
0
34
0
đúng thứ tui cần mà map là j vậy =)))
647
4702
1030
nó là mảng nhưng phạm vi rộng hơn
647
4702
1030
bn cs thể khai báo b[10000005] nhưng ko đủ không gian
0
34
0
oh
647
4702
1030
bn thay map bằng khai báo b[1000005] cx đc
0
34
0
ok
2096
1104
1868
câu này dễ mà chả ai lm nek https://hoidap247.com/cau-hoi/7370111