Dãy ước lồng nhau


Submit solution

Points: 3 (partial)
Time limit: 1.0s
JAVA11 2.0s
Pypy 3 2.0s
Memory limit: 98M
JAVA11 977M
Pypy 3 977M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Một dãy ước lồng nhau độ dài \(n\) gồm \(n\) số nguyên \(a_1, a_2, ..., a_n\) sao cho \(0 < a_1 < ... < a_n\) và \(a_1 | a_2 | ... | a_n\) với \(a | b\) kí hiệu số nguyên \(a\) là ước của số nguyên \(b\).

Cho số nguyên \(k\), tìm dãy ước lồng nhau dài nhất và có tổng các số trong dãy lớn nhất mà kết thúc tại \(k\).

Đầu vào

Một số nguyên \(k\) \((1 \le k \le 10^{12})\) duy nhất.

Đầu ra

Một dòng duy nhất là các phần tử của dãy tìm được, sắp xếp theo thứ tự tăng dần.

Ví dụ

Đầu vào 1:

10

Đầu ra 1:

1 5 10

Giải thích: dãy ước lồng nhau dài nhất kết thúc tại \(10\) là \(1, 2, 10\) hoặc \(1, 5, 10\), do \(1 + 5 + 10 > 1 + 2 + 10\) nên xuất ra dãy \(1, 5, 10\).

Đầu vào 2:

97

Đầu ra 2:

1 97
QDUY

Comments

There are no comments at the moment.