hutianmin @ 2024-10-22 21:56:42
#include<bits/stdc++.h>
using namespace std;
int n,a[100001],ans;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
if(sqrt(a[i]+a[j])==(int)sqrt(a[i]+a[j])) ans++;
cout<<ans<<'\n';
return 0;
}
悲惨事件
by wuyuxuan12345678 @ 2024-10-22 21:59:13
sqrt会向下取整吧,不一定精准,你可以打个表判断完全平方数
by hutianmin @ 2024-10-22 22:02:58
@wuyuxuan12345678 我懒得打表(我不会打表)
by hutianmin @ 2024-10-22 22:07:34
再说,n最大1e5
by wuyuxuan12345678 @ 2024-10-23 13:23:07
@hutianmin 题目给的不是1e3吗
by wuyuxuan12345678 @ 2024-10-23 13:23:46
抱歉,看错了
by wuyuxuan12345678 @ 2024-10-23 13:25:10
你可以再写一个代码,输出1e5以内的完全平方数,就像1,2,4,9......之类的,这个用不了多少时间吧
by wuyuxuan12345678 @ 2024-10-23 13:27:30
@hutianmin 然后把他塞到一个数组里,判断是不是完全平方数只要在在赋值后数组里查找就行了
by wuyuxuan12345678 @ 2024-10-23 13:30:59
或者再开个vis数组