0256. Viết hàm kiểm tra một số nguyên có là số Smith và áp dụng

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Người đăng:
Dạng bài

Viết một hàm kiểm tra một số nguyên ~n~ có phải là số Smith hay không.
Định nghĩa:

  • Một số nguyên dương ~n~ được gọi là số Smith nếu:
    • ~n~ là hợp số (không phải số nguyên tố).
    • Tổng các chữ số của ~n~ bằng tổng các chữ số của các thừa số nguyên tố của ~n~.

Ví dụ:

  • ~n = 85~ là số Smith vì:
    • Phân tích thành thừa số nguyên tố: ~85 = 5 \times 17~.
    • Tổng các chữ số của ~85~ là ~8 + 5 = 13~.
    • Tổng các chữ số của ~5~ và ~17~ là ~5 + 1 + 7 = 13~.
  • ~n = 1086~ là số Smith vì:
    • Phân tích thành thừa số nguyên tố: ~1086 = 2 \times 3 \times 181~.
    • Tổng các chữ số của ~1086~ là ~1 + 0 + 8 + 6 = 15~.
    • Tổng các chữ số của ~2~, ~3~, và ~181~ là ~2 + 3 + 1 + 8 + 1 = 15~.

Sau đó, nhập vào một số nguyên ~m~ và danh sách ~m~ số nguyên, sử dụng hàm vừa viết để kiểm tra từng số trong danh sách và in ra các số Smith trong danh sách đó.

Input

  • Dòng đầu chứa một số nguyên ~m~ ~(1 \leq m \leq 100)~.
  • ~m~ dòng tiếp theo, mỗi dòng chứa một số nguyên ~x_i~ ~(-10^6 \leq x_i \leq 10^6)~.

Output

  • In ra danh sách các số Smith trong danh sách đã nhập, các số trên một dòng, cách nhau bởi dấu cách, theo thứ tự xuất hiện trong input.
  • Nếu không có số nào là số Smith, in -.

Ví dụ

Input 1
5
22
85
2
4
7
Output 1
22 85
Input 2
2
8
0
Output 2
-

📌📌 Link thảo luận trên Facebook tại đây