티스토리 뷰
728x90
문제 링크
풀이
17 = 10001(2) 입니다.
입력받은 이진수를 왼쪽 4칸 쉬프트 해주고, 다시 그 이진수와 더해주면 17을 곱해준 것과 같습니다.
범위가 크니까 큰 수 덧셈을 구현해줍시다.
정답 코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
string u, v, ans;
cin >> u;
v = u;
u += "0000";
int c = 0;
while (!v.empty()) {
int val = u.back() + v.back() - 48 * 2 + c;
c = val / 2;
ans += to_string(val % 2);
u.pop_back();
v.pop_back();
}
while (!u.empty()) {
int val = u.back() - 48 + c;
c = val / 2;
ans += to_string(val % 2);
u.pop_back();
}
if (c) ans += "1";
reverse(all(ans));
cout << ans;
}
728x90
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[BOJ] 백준 2618 - 경찰차 (0) | 2021.03.13 |
---|---|
[BOJ] 백준 1006 - 습격자 초라기 (0) | 2021.03.13 |
[BOJ] 백준 1014 - 컨닝 (0) | 2021.03.11 |
[BOJ] 백준 1256 사전 (0) | 2021.03.10 |
[BOJ] 백준 5582 공통 부분 문자열 (0) | 2021.03.09 |
댓글