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.
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
Đặt bộ đếm dem = 0.
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.
Mỗi lần biến đổi, tăng dem lên 1. Khi n bằng 1 thì dừng và in dem.
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