Hướng dẫn giải của BASE02: Số nhị phân sang thập 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 chuỗi nhị phân S, đổi S sang số thập phân. Ý tưởng: đọc từng chữ số từ trái sang phải, mỗi lần nhân giá trị hiện tại với 2 rồi cộng chữ số mới.
Cách làm
Bắt đầu với giá trị ~gt = 0~. Với mỗi chữ số của S, lấy ~gt~ nhân 2 rồi cộng thêm chữ số đó. Ví dụ "110": 0 → 1 → 3 → 6.
Bẫy cần nhớ: chuỗi có tối đa 8 ký tự nên giá trị nhỏ, nhưng vẫn dùng kiểu long long cho chắc chắn.
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
// Moi lan doc them mot chu so, gia tri cu nhan 2 roi cong them chu so moi
long long gt = 0;
for (int i = 0; i < (int)s.size(); i++) {
gt = gt * 2 + (s[i] - '0');
}
cout << gt << "\n";
return 0;
}
Bình luận