警示后人

B3957 [GESP202403 三级] 完全平方数

future666 @ 2024-07-17 15:19:38

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,a[1010],ans,h;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++){
        for(int j=n;j>i;j--){
            h=a[i]+a[j];
            if(sqrt(h)*sqrt(h)==h){
                ans++;
            }
        }   
    }   
    cout<<ans;
    return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,a[1010],ans,h;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++){
        for(int j=n;j>i;j--){
            h=a[i]+a[j];
            if((int)sqrt(h)*(int)sqrt(h)==h){
                ans++;
            }
        }   
    }   
    cout<<ans;
    return 0;
}

by future666 @ 2024-07-17 15:22:08

第一个开O2优化0分,不开50分; 第二个AC。 你猜为啥?

sqrt 的返回值是 double 类型,而 a[i]+a[j] 这一部分是 int 类型!坑死我了。。。。。。我也是小菜,开评论区明白的。 6.15做到7.17......


by wzy20110830 @ 2024-07-23 16:38:46

同错,感谢


by huangzhangxuan2011 @ 2024-07-26 16:54:56

+1


by EXR_FAL @ 2024-08-14 20:28:33

+1+1+1(调了3次全50分。。)


|