听取wa声一片~

B3957 [GESP202403 三级] 完全平方数

23acyanglirui @ 2024-09-05 13:44:34

有哪位大佬、神犇、甚至蒟蒻能够帮我指点一下迷津吗,玄关哦!(不耻下问.jpg)

#include<bits/stdc++.h>

using namespace std;

int n,t,c;
int a[1001];

int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++){
        for(int j=i;j<n;j++){
            t=a[i]+a[j]/2+1;
            while(t--){
                if(t*t==a[i]+a[j]){
                    c++;
                    break;
                }
            }
        }
    }
    printf("%d\n",c);
    return 0;
} 

蒟蒻实在是想不出解决TLE的办法了,甚至改成了scanf也没用!

另一个WA更是错的不明不白,代码样例是ok的呀!

请看结果

在线等,挺急的!

求助!求助!


by Yxy7952 @ 2024-09-05 13:52:53

@23acyanglirui

求关

#include<bits/stdc++.h>

using namespace std;

int n,t,c;
int a[1001];

int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            t=a[i]+a[j];
            int k=0;
            while(k*k<t){
                k++;
            }
            if(k*k==t) c++;
        }
    }
    printf("%d\n",c);
    return 0;
} 

by 23acyanglirui @ 2024-09-05 14:10:15

下午我放学后再来看,谢谢!


by yxj725 @ 2024-09-05 14:23:36

#include<bits/stdc++.h>
using namespace std;
bool pfs (int n) {
    int r=sqrt(n);
    if (r*r==n) {
        return 1;
    } else {
        return 0;
    }
}
int a[1010];
int main (){
    int n;
    int cnt=0;
    scanf ("%d",&n);
    for (int i=1;i<=n;i++) {
        scanf ("%d",&a[i]);
    }
    for (int i=1;i<=n;i++) {
        for (int j=i+1;j<=n;j++) {
            int ans=a[i]+a[j];
            if (pfs(ans)==1) {
                cnt++;
            }
        }
    }
    cout<<cnt;
return 0;
}

@23acyanglirui 本人比较喜欢用函数QWQ


by __Deng_Rui_Song__ @ 2024-09-05 16:09:10

@23acyanglirui 完全平方数可以预处理:

#include<bits/stdc++.h>

using namespace std;
int n,t,c;
int a[1001];
bool vis[100001];

int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
   for(int i=1;i*i<=1e5;i++){
        vis[i*i]=1;
   }
    for(int i=0;i<n;i++){
        for(int j=i;j<n;j++){
            if(vis[a[i]+a[j]){
            c++;  
            }
        }
    }
    printf("%d\n",c);
    return 0;
} 

by 23acyanglirui @ 2024-09-05 20:08:40

@Yxy7952 @yxj725 @Deng_Rui_Song 感谢诸位dalao!!!已关!!!(蒟蒻的 Markdown很“好”)


|