cứu tui vói, học oython khổ ghê chứ ;-;

cứu tui vói, học oython khổ ghê chứ ;-;
Câu trả lời này dùng AI, hãy kiểm tra lại trước khi sử dụng
Để giải bài toán này, ta cần tìm các số hoàn hảo trong một mảng A gồm N phần tử. Một số được gọi là số hoàn hảo nếu tổng các ước số dương (không bao gồm chính nó) của nó bằng chính nó.

Các bước giải quyết bài toán như sau:

1. Đọc dữ liệu đầu vào: Chúng ta cần đọc số lượng phần tử N và mảng A gồm các số nguyên.

2. Xác định các số hoàn hảo: Đối với mỗi số A[i] trong mảng, ta sẽ tính tổng các ước số dương của nó (trừ chính nó) và so sánh với chính nó.

- Để tìm các ước số của A[i], ta có thể lặp từ 1 đến √A[i]. Nếu số k chia hết cho A[i], thì cả k và A[i]/k đều là ước số. Tuy nhiên, ta cần lưu ý không đưa A[i] vào tổng các ước số.

3. Lưu trữ các số hoàn hảo: Nếu một số được kiểm tra là số hoàn hảo, ta sẽ thêm nó vào một danh sách hoặc một tập hợp.

4. Xuất kết quả: Cuối cùng, nếu có số hoàn hảo, ta sẽ in ra các số đó; nếu không, in ra -1.

Dưới đây là một đoạn mã Python tương ứng với giải thuật trên:

```python
def is_perfect_number(num):
if num < 2:
return False
total = 1 # 1 là ước số của mọi số nguyên lớn hơn hoặc bằng 1
for i in range(2, int(num0.5) + 1):
if num % i == 0:
total += i
if i != num // i:
total += num // i
return total == num

n = int(input())
a = list(map(int, input().split()))
perfect_numbers = []

for number in a:
if is_perfect_number(number):
perfect_numbers.append(number)

if perfect_numbers:
print(" ".join(map(str, perfect_numbers)))
else:
print(-1)
```

### Giải thích mã:

- Hàm `is_perfect_number(num)` thực hiện việc kiểm tra nếu một số là số hoàn hảo. Nó sử dụng vòng lặp để tìm các ước số và cộng chúng lại.

- Chúng ta đọc số lượng phần tử N và mảng A từ đầu vào.

- Đối với mỗi số trong mảng A, chúng ta gọi hàm kiểm tra và lưu trữ các số hoàn hảo.

- Cuối cùng, nếu có số hoàn hảo, chúng ta in ra; nếu không có, in -1.

Bằng cách này, ta có thể giải quyết bài toán hiệu quả trong giới hạn cho trước.
Đăng phản hồi