Đưa về 0

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

Cho một số nguyên dương \(N\). Thực hiện các thao tác sau để đưa \(N\) về \(0\) với số bước ít nhất:

  • Nếu \(N\) là số chẵn, thực hiện \(N\) = \(\frac{N}{2}\).
  • Nếu \(N\) là số lẻ, thực hiện \(N\) = \(N - 1\).

Hãy viết một chương trình:

  • Nhập vào một số nguyên dương \(N (1 ≤ N ≤ 10^{18})\).
  • In ra số bước ít nhất để đưa \(N\) về 0.

Ví dụ

Input

15

Ouput

7
Note
Bước 1: 15 (lẻ) -> 14
Bước 2: 14 (chẵn) -> 7
Bước 3: 7 (lẻ) -> 6
Bước 4: 6 (chẵn) -> 3
Bước 5: 3 (lẻ) -> 2
Bước 6: 2 (chẵn) -> 1
Bước 7: 1 (lẻ) -> 0
Tổng số bước: 7

Bình luận (12)

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