Yêu cầu: Cho n số nguyên dương và một số nguyên dương X, hãy viết chương trình in các số chính phương lớn hơn X trong n số đó. Dữ liệu: Kết quả: In ra tất cả các số chính phương lớn hơn X ( mỗi số cách nhau một dấu cách trống ), nếu không có số nào thì in ra -1. Input Specification Dòng đầu tiên ghi hai số nguyên dương n(n≤105) và X(X≤109). Dòng thứ hai ghi n số nguyên dương ai(ai<109). Output Specification In ra tất cả các số chính phương lớn hơn X (mỗi số cách nhau một dấu cách trống và theo đúng thứ tự của mảng), nếu không có số nào thì in ra -1. Help me pls Câu này 20 điểm thôi đơn giản là vì tôi hết điểm :)(

2 câu trả lời

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

    long long n, X, d = 0, i;

    cin >> n >> X;

    long A[n];

    for (i = 0; i < n; i++) cin >> A[i];

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

        if (A[i] > X) {

            if (sqrt(A[i]) == int(sqrt(A[i]))) {

                d = 1;

                cout << A[i] << " ";

            }

        }

    if (d == 0) cout << -1;

    return 0;

}

Thử đi nha chứ không biết có bị time limit không đâu :v

*Python

from math import sqrt
n,x=map(int,input().split())
a=list(map(int,input().split()))
dem=0
for i in range (n):
    if (a[i]>x and int(sqrt(a[i]))*int(sqrt(a[i]))==a[i]):
        print(a[i],end=' ')
        dem+=1
if dem==0:
    print(-1)

*C++:

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