Số chính phương lớn nhất trong mảng Yêu cầu: Cho n số nguyên dương, hãy viết chương trình in ra số chính phương lớn nhất trong n số nguyên đã cho Dữ liệu: Dòng đầu tiên ghi một số nguyên dương n(n≤105). Dòng thứ hai ghi n số nguyên dương ai(ai<109). Kết quả: In ra số chính phương lớn nhất có trong dãy, nếu không có số nào thì in ra -1. Sample Input Copy 10 1 3 4 5 6 7 2 9 16 25 Sample Output Copy 25 Help me C++ nha

2 câu trả lời

mình gửi code nhá , sai cmt cho mình bt nhá 

#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[100000];
int scp(int n)
{
    int sqr;
    sqr=(sqrt(n));
    if(sqr*sqr==n)
        return 1;
    else
        return 0;
}
main()
{
    int n,max;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;i<=n;i++)
    {
        if(scp(a[i]))
        {
            if(a[i]>max)
                max=a[i];
        }

    }
        if(max!=0)
            cout<<max;
        else
            cout<<"-1";

    return 0;
}

#include <bits/stdc++.h>

using namespace std;

long n;

int main()

{

    cin >> n;

    long a[n];

    for (long i=0; i<n; i++)

    {

        cin >> a[i];

    }

    sort(a,a+n);

    reverse(a,a+n);

    bool cp=false;

    for (long i=0; i<n; i++)

    {

        if (pow((int(sqrt(a[i]))),2)==a[i])

        {

            cout << a[i];

            cp=true;

            break;

        }

    }

    if (cp==false)

    {

        cout << -1;

    }

    return 0;

}