老师正在带领N个学生玩游戏。这个游戏会给每个学生一个能力值X,同时这个游戏需要两个人配合,两个人最终的得分为两人的能力值之和乘上两人的能力值之差的绝对值,若两人的得分等于一个正整数M,我们则称这对学生为完美配对。现在老师想知道,有多少对学生是完美配对。
输入格式
第一行两个数:N和M。
第二行N个数:表示这N个学生的能力值。
50%的数据:N<=100.
100%的数据:N<=100000, 每个X均小于1000,M<=1000000.
输出格式
一行,表示学生完美配对的个数。
输入/输出例子1
输入:
5 3
1 2 2 1 3
输出:
4
首先模板:
for()
{
int x;
x=sqrt(M-a[i]*a[i]);
if(x*x==M+a[i]*a[i])
······/*奶牛*/
}
套用:
#include<bits/stdc++.h>
using namespace std;
int a[1000005];
int main(){
int n,m,cnt=0;
cin>>n>>m;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a+0,a+n);
for(int i=0;i<n;i++)
{
int x;
x=sqrt(m+a[i]*a[i]);
if(x*x==m+a[i]*a[i])
{
int index1=lower_bound(a,a+n,x)-a;
int index2=upper_bound(a,a+n,x)-a;
cnt+=index2-index1;
}
}
printf("%d",cnt);
return 0;
}