题目描述:
如果两个数a,b,只要a=2*b或者b=2*a成立,那么就说这两个数是“双倍对”。例如:a=1,b=2,那么a和b这两个数是一对双倍对。现在给出一组数,请计算一下里面有多少对是“双倍对”。由于数据量比较大,请你用程序来实现自动计算吧。
输入格式
输入数据共有两行
第一行有一个整数N,表示这组数的个数。
第二行有N个正整数。
100%的数据 1≤N ≤1000 , 1≤ai≤1000000 。
输出格式
输出N个数中有多少对是“双倍对”。
输入/输出例子1
输入:
6
5 2 4 2 10 4
输出:
5
样例解释
其中:5和 10有1对, 2 和4有3对 ,4和 2 有1对,共有5对双倍对
代码:
#include <bits/stdc++.h>
using namespace std;
int n,a[100010],s=0;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=1;i<=n-1;i++)
{
for(int j=i+1;j<=n;j++)
{
if(a[i]*2==a[j])
s++;
}
}
cout<<s;
return 0;
}