Hướng dẫn giải của BASE01: Số thập phân sang nhị phân
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 một số nguyên N, in ra biểu diễn nhị phân của N. Ý tưởng: liên tục chia N cho 2 và lấy số dư, số dư là chữ số nhị phân.
Cách làm
Lấy số dư của ~n~ khi chia cho 2 để được chữ số nhị phân nhỏ nhất (hàng đơn vị), rồi chia ~n~ cho 2 và lặp lại cho đến khi ~n = 0~. Các chữ số tìm được được ghép thêm vào đầu xâu, nên đến cuối ta có đúng thứ tự từ trái sang phải.
Bẫy cần nhớ: nếu N = 0 thì vòng lặp không chạy, vì vậy chương trình in 0 riêng. Nếu N âm thì in dấu "-" rồi đổi N thành số dương.
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// Neu n la so am thi in dau '-' truoc, roi doi phan duong
if (n < 0) {
cout << "-";
n = -n;
}
// Truong hop n = 0 thi chi can in 0
if (n == 0) {
cout << "0\n";
return 0;
}
// Lay tung chu so nhi phan (du cho 2) tu cuoi len, roi dao nguoc lai khi in
string kq = "";
while (n > 0) {
kq = char('0' + n % 2) + kq;
n = n / 2;
}
cout << kq << "\n";
return 0;
}
Bình luận