Số siêu tình cảm

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1200 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Vào 1 ngày đẹp trời, Prototype đang đói bụng nên rủ cô bạn thân uia đi ăn đồ nướng. uia liền ra điều kiện: Nếu Prototype giải được bài này thì uia sẽ bao ăn, ngược lại thì Prototype phải bao uia, Prototype lập tức đồng ý. Bài toán như sau: Tìm được tất cả số siêu tình cảm trong đoạn \(n\) số.
Một số gọi là số siêu tình cảm nếu nó thoả mãn 2 điều kiện sau đây:

  • Số đó phải chia hết cho đúng 3 số nguyên tố và tổng chữ số của số đó phải chia hết cho 2.
  • Bình phương của số đó phải chia hết cho 3,5 và 7.

Tuy nhiên, vì uia là một cô gái thích số \(1\) nên cô ấy ra thêm 1 điều kiện là: Các số siêu tình cảm được chuyển sang dạng nhị phân.

  • Nếu trong dạng nhị phân, số lượng số \(1\) nhiều hơn số \(0\) thì độ đẹp của số siêu tình cảm được tăng lên 1 đơn vị. Nếu tổng độ đẹp của các số siêu tình cảm lớn hơn hoặc bằng một nửa số lượng số siêu tình cảm trong dãy thì in ra YES, ngược lại in ra NO.

Các bạn coders hãy giúp Prototype chinh phục được bài toán của uia nhé!

Yêu cầu:

  • Hãy tìm số lượng số siêu tình cảm trong đoạn và in ra tất cả số đó.

Input

  • Dòng thứ nhất gồm 1 số nguyên dương \(n\) (\(1 \le n \le 10^6\))
  • Dòng thứ hai gồm \(n\) số nguyên dương \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^{18}\))

Output

  • Dòng thứ nhất in ra 1 số là số lượng số siêu tình cảm trong đoạn.
  • Dòng thứ hai ghi tất cả các số siêu tình cảm trong đoạn, mỗi số cách nhau bởi khoảng trống.
  • Nếu tổng độ đẹp của các số siêu tình cảm lớn hơn hoặc bằng một nửa số lượng số siêu tình cảm trong dãy thì dòng thứ ba in ra YES, ngược lại in ra NO.
  • Nếu trong đoạn không có số siêu tình cảm thì in ra -1.

Example

Test 1

Input
4
123 105 575 945
Output
2
105 945
YES
Note
  • Số \(123\):
    Chỉ chia hết cho 2 số nguyên tố là 2 và 41 (loại)
  • Số \(575\):
    Chỉ chia hết cho 2 số nguyên tố là 5 và 23 (loại)
  • Số \(105\):
    Chia hết cho 3 số nguyên tố là 3, 5 và 7
    Tổng chữ số: \(1 + 0 + 5 = 6 \vdots 2\)
    Vì nó chia hết cho 3, 5 và 7 nên bình phương của nó chắc chắn chia hết cho 3, 5 và 7.
  • Số \(945\):
    Chia hết cho 3 số nguyên tố là 3, 5 và 7
    Tổng chữ số: \(9 + 4 + 5 = 18 \vdots 2\)
    Vì nó chia hết cho 3, 5 và 7 nên bình phương của nó chắc chắn chia hết cho 3, 5 và 7.
    Như vậy ta có 2 số siêu tình cảm là \(105\)\(945\).
    Số \(105\) chuyển sang dạng nhị phân là \(1101001\), số lượng số \(1\)\(4 > 3\) số lượng số \(0\).
    Số \(945\) chuyển sang dạng nhị phân là \(1110110001\), số lượng số \(1\)\(6 > 4\) số lượng số \(0\).
    Vì có 2/2 số thoả điều kiện nên in ra "YES"

Test 2

Input
5
424 239 212 574 918
Output
-1
Note
  • Vì tất cả đều không phải là số siêu tình cảm nên in ra -1.

Scoring

  • Subtask 1 (30% số điểm): \(1 \le n \le 10^3\), \(1 \le a_i \le 10^6\)
  • Subtask 2 (30% số điểm): \(10^3 \le n \le 10^6\), \(10^6 \le a_i \le 10^{12}\)
  • Subtask 3 (40% số điểm): Không có ràng buộc nào thêm

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.