题目:http://www.gdfzoj.com/oj/contest/472/problems/3
给定长度为n的序列A,求出有多少个数对(i,j)(1<=i<j<=n)使得a[i]+a[j]是完全平方数
30%,n<=100,1<=a[i]<=100
100%,n<=100000,1<=a[i]<=100000
别被莫名其妙的数据范围吓到了啊
表面深奥实则暴力
循环平方数x^2,判断x^2-a[i]是否在队内即可
是不是很简单。。。
注意注意注意!!!
1,i<j !!!不能有重复
2,处理不能重复的操作 ≠ 特判 if (i*i!=2*a[j])
也 ≠ tong[a[j]]--;
还 ≠ tong[i*i/2]--;
而是
if (i%2==0 && tong[i*i/2]!=0)
remove+=tong[i*i/2];
printf("%lld\n",(ans-remove)/2);