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
Comments