728x90
시간 제한 : 1초
메모리 제한 : 128MB
문제
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 16, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
출력
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
소스코드
#include <iostream> #include <string.h> #include <math.h> using namespace std; int main(void) { char arr[100]; int len, sum = 0, n; cin >> arr; len = strlen(arr); cin >> n; for (int i = len - 1; i >= 0; i--) { if (arr[i] >= '0' && arr[i] <= '9') sum += pow(n, len - 1 - i)*(int)(arr[i] - '0'); else sum += pow(n, len - 1 - i)*(int)(arr[i] - 'A' + 10); } cout << sum; }
Tip
진법 개념만 명확히 알고, 문자열 처리에 익숙하면 쉽게 문제를 풀 수 있다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준 알고리즘] 2959 - 거북이(COCI 2008/2009) (0) | 2017.11.24 |
---|---|
백준 알고리즘] 6376 - e 계산(ACM-ICPC 북미 지역 예선) (0) | 2017.11.23 |
백준 알고리즘] 11727 - 2xn 타일링 2 (0) | 2017.11.20 |
백준 알고리즘] 5567 - 결혼식(JOI 2010 예선 3번) (0) | 2017.11.18 |
백준 알고리즘] 1676 - 팩토리얼 0의 개수 (0) | 2017.11.16 |