Tặng quà

Xem dạng PDF

Gửi bài giải

Điểm: 0,01 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: QUA.INP
Output: QUA.OUT

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Trong một trận đấu bóng đá, người ta bán được ~N~ vé ~(N \le 3 \times 10^5)~. Mỗi khán giả có một vé, trên vé ghi số nguyên dương. Người ta muốn tặng quà cho những người có vé thuộc dãy số hạnh phúc. Dãy số hạnh phúc là một dãy số chỉ bao gồm các số hoàn thiện.

Số hoàn thiện được định nghĩa là một số mà có tổng các ước không kể nó bằng chính nó. Ví dụ: ~6~ có ~3~ ước thỏa mãn là ~1, 2, 3~ tổng các ước là ~6~.

Yêu cầu: Từ số vé ban đầu đã cho, em hãy tìm ra những người được tặng quà thỏa mãn yêu cầu trên.

Input

Vào từ tệp văn bản QUA.INP gồm:

  • Dòng đầu tiên ghi số nguyên ~N~ là số lượng vé đã bán ~(1 \le N \le 3 \times 10^5)~.
  • Dòng tiếp theo ghi ~N~ số nguyên dương ~A_1, A_2, \dots, A_N~, ~(0 < A_i < 3 \times 10^5, i = 1, 2,\dots, N)~. Mỗi số cách nhau một khoảng trắng (dấu cách).

Output

Ghi ra file QUA.OUT gồm:

  • Dòng đầu tiên là số lượng người được tặng quà. Nếu không có ai được tặng quà thì đưa ra số ~0~.
  • Dòng thứ hai là số vé được tặng quà theo thứ tự xuất hiện trong dữ liệu vào, mỗi số cách nhau một dấu cách.

Sample Input 1

9
5 18 7 4 6 13 8 11 27

Sample Output 1

1
6

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    nguyenphat2009cm  đã bình luận lúc 11, Tháng 5, 2025, 9:59

    làm sao để tối ưu đây mn

    ham kiem tra so hanh phuc

    def hanhphuc(n): if n<6: return False

    dem = 0
    for i in range(1, n//2+1 ):
        if n% i ==0:
            dem += i
    return dem == n
    

    with open('QUA.INP','r') as fi, open('QUA.OUT','w') as fo: n = int(fi.readline()) data = list(map(int,fi.readline().split())) dem = 0 # dem so luong nguoi duoc tang qua qua =[] # danh sach nhung nguoi duoc tang qua for i in data: if hanhphuc(i): dem += 1 qua.append(i)

    fo.write(f'{dem}\n')
    if dem > 0:
        for i in qua:
            fo.write(f'{i} ')
    

    • 1
      Doncute  đã bình luận lúc 11, Tháng 5, 2025, 14:46

      Có mấy số làm def chi cho mệt! B=[6,28,496,8128] ans=[i for i in A if i in B]