题目描述
现在给定两个长度为𝑛n的正整数序列𝑎1,𝑎2,⋯ ,𝑎𝑛,𝑏1,𝑏2,⋯ ,𝑏𝑛a1,a2,⋯,an,b1,b2,⋯,bn。
问存在多少对数对(𝑖,𝑗),1≤𝑖<𝑗≤𝑛(i,j),1≤i<j≤n满足𝑎𝑖𝑎𝑗=𝑏𝑗𝑏𝑖ajai=bibj
输入格式
输入第一行,一个正整数𝑛n,表示序列的长度。
接下来𝑛n行,每行两个正整数𝑎𝑖,𝑏𝑖ai,bi。
输出格式
单个整数:表示表示满足题意的数对的个数。
数据范围
对于 50%50% 的数据,1≤𝑛≤10001≤n≤1000
对于 100%100% 的数据,1≤𝑛≤1,000,000,1≤𝑎𝑖,𝑏𝑖≤10001≤n≤1,000,000,1≤ai,bi≤1000
样例数据
输入:
3
4 5
3 8
10 2
输出:
1
详见代码:
cpp
#include <bits/stdc++.h>
using namespace std;
int a[1000005];
int b[1000005];
int c[1000005];
int main()
{
int n;
int cnt=0;
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i];
cin>>b[i];
c[a[i]*b[i]]++;
}
for (int i=1;i<=1000000;i++)
{
if (c[i]>=2)
{
cnt+=c[i]*(c[i]-1)/2;
}
}
cout<<cnt;
return 0;
}