문제 링크: https://www.acmicpc.net/problem/1550
16진수(hexadecimal)를 입력받아 10진수(decimal)로 출력하는 문제입니다.
scanf("%x", &n)을 사용하면 쉽습니다. x가 hexadecimal value를 입력하는 format입니다.
아니면 직접 변환해주면 되는데요, 진법 변환은 어렵지 않습니다. 전개하는 방법만 기억해두면 됩니다.
\[ABC_{(16)}=10 \times 16^2 + 11 \times 16^1 + 12 \times 16^0 \]
예를 들어 \(ABC_{(16)}\)을 10진수로 나타내면 위와 같습니다. 16진수의 A~F는 10진수의 10~15를 나타내는 점 기억해주세요.
// 1550
#pragma GCC optimize ("Ofast")
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
int hex_digit_to_dec(char a) {
if (a >= '0' && a <= '9')
return a - '0';
else
return a - 'A' + 10;
}
int mypow(int base, int exp) {
if (exp == 0) return 1;
int ret = 1;
for (int i = 0; i < exp; ++i) {
ret *= base;
}
return ret;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
string s;
cin >> s;
int sum = 0;
int pos = 0;
for (auto it = s.rbegin(); it != s.rend(); ++it) {
sum += hex_digit_to_dec(*it) * mypow(16, pos);
++pos;
}
cout << sum << '\n';
return 0;
}
반응형
'Online Judge > 백준' 카테고리의 다른 글
[백준][C++] 1259: 팰린드롬수 (0) | 2020.06.13 |
---|---|
[백준][C++] 1620: 나는야 포켓몬 마스터 이다솜 (0) | 2020.06.12 |
[백준][C++] 1012: 유기농 배추 (0) | 2020.06.10 |
[백준][C++] 1010: 다리 놓기 (0) | 2020.06.06 |
[백준][C++] 9461: 파도반 수열 (0) | 2020.06.05 |