[Buổi 5][Củng cố vòng lặp][HW] Bài 2: Chuỗi bước Collatz


LÀM BÀI

Points: 100
Time limit: 2.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Chuỗi bước Collatz

Bối cảnh

Dãy Collatz bắt đầu từ một số nguyên dương n. Nếu n chẵn, ta chia nó cho 2; nếu n lẻ, ta thay bằng 3n + 1. Quá trình lặp lại cho tới khi giá trị trở thành 1.

Bạn cần đếm số lần biến đổi đã thực hiện. Ví dụ, từ 3: 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1, có 7 bước.

Yêu cầu

Khởi tạo steps = 0. Trong khi n != 1:

  • nếu n chẵn, thay n bằng n/2;
  • nếu n lẻ, thay n bằng 3*n + 1;
  • sau mỗi lần biến đổi, tăng steps lên 1.

In steps khi quá trình kết thúc.

Input

Dữ liệu vào được cung cấp theo định dạng sau:

Một số nguyên n.

Hãy đọc các giá trị theo đúng thứ tự và ý nghĩa đã mô tả trong đề bài.

Output

In kết quả theo đúng định dạng sau:

Số bước.

Không in thêm lời giải thích, nhãn hoặc ký tự ngoài phần kết quả được yêu cầu.

Ràng buộc

1≤n≤10^6.

Ví dụ 1

Input

1

Output

0

Giải thích ví dụ

Dãy biến đổi là 1. Có 0 lần biến đổi trước khi đạt 1, nên output là 0.

Ví dụ 2

Input

4

Output

2

Giải thích ví dụ

Dãy biến đổi là 4 → 2 → 1. Có 2 lần biến đổi trước khi đạt 1, nên output là 2.

Thông tin học tập

  • Buổi: B05
  • Concepts: while loop, parity check, termination condition
  • Giới hạn kiến thức: B01-B05
  • Time limit: 2 seconds
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo