求助

B3957 [GESP202403 三级] 完全平方数

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数组O(n)赋值再O(1)查询


|