爆0求助

B3957 [GESP202403 三级] 完全平方数

Ray_0601 @ 2024-06-29 07:17:38

#include <bits/stdc++.h>
using namespace std;

int a[1010];

bool pf(int x)
{
    if(sqrt(x) * sqrt(x) == x)
    {
        return true;
    }
    return false;
}

int main()
{
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    int cnt = 0;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
        {
            if(pf(a[i] + a[j]))
            {
                cnt++;
            }
        }
    }
    cout << cnt << endl;
    return 0;
}

by 210101zhaosicheng @ 2024-06-29 07:32:56

@Ray_0601

第一个:读题仔细,是 i<j

第二个:sqrt开方开出来是浮点数,开过了以后要转换成int类型。

下面是AC代码:

#include <bits/stdc++.h>
using namespace std;

int a[1010];

bool pf(int x)
{
    if((int)sqrt(x) * (int)sqrt(x) == x)
    {
        return true;
    }
    return false;
}

int main()
{
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    int cnt = 0;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j < i; j++)
        {
            if(pf(a[i] + a[j]))
            {
                cnt++;
            }
        }
    }
    cout << cnt << endl;
    return 0;
}

by 210101zhaosicheng @ 2024-06-29 07:33:19

求壶关


by lzmzy_X1029 @ 2024-07-11 13:22:27

j=i+1 sqrt开根号转int 如int a=sqrt(a[i]+a[j]) 代码如下:

#include<iostream>
#include<cmath>
using namespace std;
int a[1005];
int main(){
    int n,ccnt=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            int x=a[i]+a[j];
            int tmp=sqrt(x);
            if(tmp*tmp==x){
                ccnt++;
            }
        }
    }
    cout<<ccnt;
    return 0;
}

|