728x90

https://www.acmicpc.net/problem/11816

 

11816번: 8진수, 10진수, 16진수

첫째 줄에 X가 주어진다. X는 10진수로 바꿨을 때, 1,000,000보다 작거나 같은 자연수이다. 16진수인 경우 알파벳은 소문자로만 이루어져 있다.

www.acmicpc.net

#include <iostream>
#include <cmath>
#include <string>
using namespace std;


int main() {
	string s;
	cin >> s;
	if (s[0] >= '1' && s[0] <= '9') {
		cout << s;
	}
	else if (s[1] == 'x') {
		s.erase(0, 2);
		int total = 0;
		for (int i = s.size() - 1; i >= 0; i--) {
			if(s[i] <= '9')
				total += ((s[i] - '0') * pow(16, s.size() - 1 - i));
			else 
				total += ((s[i] - 'a' + 10) * pow(16, s.size() - 1 - i));
		}
		cout << total;
	}
	else {
		s.erase(0, 1);
		int total = 0;
		for (int i = s.size() - 1; i >= 0; i--) {
			total += ((s[i] - '0') * pow(8, s.size() - 1 - i));
		}
		cout << total;
	}
	return 0;
}
728x90

+ Recent posts