Liệt kê số chính phương trong dãy số

199
Lập trình C++

Bài toán. Liệt kê các số chính phương có trong dãy số a. Nếu không có ghi số -1. Ví dụ:

SOCP.INP

SOCP.OUT

10

3 4 7 5 9 3 16 21 36 8

4 9 16 36

Code tham khảo:

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    freopen("SOCP.INP","r",stdin);
    freopen("SOCP.OUT","w",stdout);
    int n, a[1000];
    cin >> n;
    for(int i=0; i < n; i++) {
        cin >> a[i];
    }
    int p = 0;
    for(int i = 1; i < n; i++)
        if(sqrt(a[i]) == trunc(sqrt(a[i]))) {
            cout << a[i] << " ";
            p = 1;
        }
    if(p == 0) cout << -1;
    return 0;
}