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

Xem PDF

Điểm: 800 (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\).

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.

Constraints

  • \(1 \le n \le 10^6\)

Example

Sample input

3

Sample output
3 10 5 16 8 4 2 1


Bình luận


  • -2
    PY1FLePhuocMinhHung    5:08 p.m. 8 Tháng 9, 2023

    Mình làm thế này mà bị Wrong Answer là sao nhỉ?
    a=int(input())
    for i in range(10**6):
    if a==1:
    print(1,end=" ")
    break
    else:
    if a%2==0:
    print(a//2,end=" ")
    else:
    print(a*3+1,end=" ")


    • -4
      iq2000laday    9:27 a.m. 30 Tháng 9, 2023

      Hình như bạn quên chưa thụt đầu dòng mấy câu lệnh đúng không
      Sau các câu lệnh for, if-elif-else nhớ bấm tab hoặc bấm phím cách 4 lần nha bạn


      • 0
        hoangphucnguyen2012    4:32 p.m. 19 Tháng 7, 2024

        ko phải sai cái đó đâu do khi code thì nó vẫn cách đầu dòng như bình thường nhưng khi gửi lên comment thì nó không cách nữa bạn không tin thì thử mà xem


        • 0
          nguyentheanh2012    11:06 a.m. 29 Tháng 10, 2023 chỉnh sửa 4

          Sai cũng đúng,phải cho a thay đổi chứ.
          Bạn cần code ko.

      7 bình luận nữa