Số cặp

Xem PDF



Tác giả:
Dạng bài
Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một mảng gồm \(n\) số nguyên dương \(a_1,\) \(a_2,\) \(a_3,\) \(...,\) \(a_n.\)

Yêu cầu : Hỏi có bao nhiêu cặp số bằng nhau ? \((\)Bao nhiêu cặp \(a_i\) \(=\) \(a_j\) với \(i\) \(\neq\) \(j,\) \((ai,\) \(aj)\)\((aj,\) \(ai)\) chỉ được tính là \(1\) cặp\().\)

Input

  • Dòng thứ nhất là chiều dài \(n\) của mảng \((1\) \(\leq\) \(n\) \(\leq\) \(10^5).\)
  • Dòng thứ hai gồm \(n\) số nguyên \(a_1,\) \(a_2,\) \(a_3,\) \(...,\) \(a_n\) \((1\) \(\leq\) \(a_i\) \(\leq\) \(10^5),\) mỗi số cách nhau một khoảng trắng.

Output

  • Là số nguyên xác định số lượng các cặp bằng nhau.

Example

Test 1

Input
5
8 2 9 8 1
Output
1

Test 2

Input
7
6 2 4 2 4 3 4
Output
4

Bình luận


  • 0
    lehongduc    9:44 p.m. 19 Tháng 6, 2024

    bài này có thể dùng map với độ phức tạp O(n)

    code mẫu

    include<bits/stdc++.h>
    define ll long long
    using namespace std;
    int main()
    {
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    ll n;
    cin>>n;
    ll t=0,m;
    map<ll,ll> a;
    for(ll i=0;i<n;i++) { cin>>m;
    a.insert(make_pair(m,1));
    if(a.size()==t)
    {
    a[m]++;
    }
    else t++;
    }
    ll dem=0;
    for(pair<ll,ll> i:a)
    {
    if(i.second!=1)
    {
    i.second--;
    dem+=(i.second+1)*i.second/2;
    }
    }
    cout<<dem;
    }

    • 11 bình luận nữa