Đưa về 0

Xem PDF

Điểm: 500 (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


  • 0
    hieugucci1223    10:19 p.m. 11 Tháng 12, 2024 chỉnh sửa 2

    hint

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        long long n;
        cin >> n;
        long long dem = 0;
        while(n > 0){
            if (n % 2 == 0){
                n = n / 2;
                dem +=1;
            }
            else {
                n = n - 1;
                dem +=1;
            }
        }
        cout << dem;
    
        return 0;
    }
    

    • -20
      minhquannguyenphuc2013    9:58 p.m. 26 Tháng 11, 2024

      Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.

      1 phản hồi