CSES - Weird Algorithm | Thuật toán lạ

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: 400 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Xét thuật toán sau nhận đầu vào là một số nguyên dương \(n\). Nếu \(n\) chẵn, thuật toán sẽ chia nó cho hai, và nếu \(n\) lẻ, thuật toán nhân ba nó lên rồi cộng thêm một đơn vị. Thuật toán trên lặp lại điều này cho tới khi \(n\) bằng \(1\). Ví dụ, dãy số thực hiện với \(n=3\) là:

\[3 \rightarrow 10 \rightarrow 5 \rightarrow 16 \rightarrow 8 \rightarrow 4 \rightarrow 2 \rightarrow 1\]

Việc của bạn là hãy mô phỏng lại cách hoạt động của thuật toán với một giá trị \(n\) cho trước.

Input

  • Một dòng duy nhất chứa số \(n\)
  • \(1 \leq n \leq 10^6\)

Output

  • In ra một dòng lần lượt chứa từng giá trị của \(n\) trong khi chạy thuật toán

Example

Test 1

Input
3
Output
3 10 5 16 8 4 2 1

Bình luận (28)

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