Hướng dẫn giải của [200 đề thầy Đức] Bài 115: Biến đổi số


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cho số nguyên dương n. Mỗi bước: nếu n chẵn thì n chia 2, nếu n lẻ thì n thành 3n + 1. Hỏi cần bao nhiêu bước để n bằng 1.

Cách làm
  1. Đặt bộ đếm dem = 0.

  2. Trong khi n khác 1, kiểm tra n có chẵn không bằng n % 2 == 0. Nếu chẵn thì n = n / 2, nếu lẻ thì n = 3 * n + 1.

  3. Mỗi lần biến đổi, tăng dem lên 1. Khi n bằng 1 thì dừng và in dem.

  4. Ví dụ n = 13 cần 9 bước: 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1.

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    int dem = 0;
    // Lặp biến đổi cho đến khi n bằng 1, mỗi lần biến đổi đếm thêm 1 bước
    while (n != 1) {
        if (n % 2 == 0) {
            n = n / 2;
        } else {
            n = 3 * n + 1;
        }
        dem++;
    }
    cout << dem << "\n";
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.