반응형
어떤 수가 있고(0~Z) 그 수가 n진법(2진법 ~ 36진법)으로 나타나져 있을때, 그 수를 10진법으로 변환하는 알고리즘이다.
1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <stdio.h> #include <string.h> #include <math.h> char string[40]; double ans; int main() { int n; int i; int len; scanf("%s",string); scanf("%d",&n); len = strlen(string); for(i = 0 ; i < len ; i++) { if( 48 <= string[i] && string[i] <= 57) { string[i] = string[i] - 48; } else if( 65 <= string[i] && string[i] <= 90) { string[i] = string[i] - 55; } } for(i = len-1 ; i >= 0 ; i --) { ans = ans + string[i]*pow(n,len-i-1); } printf("%.0lf",ans); } | Crocus |
string 배열에 문자열로 수를 받아 낸 뒤,
몇 진법으로 표현되어있는지 n을 받아낸다.
그리고 아스키 코드에 의해 48~57은 0~9이고
65~90은 A~Z이다.
그 수들을 조건에 맞추어 -48또는, -55를 하여
0~35의 값을 만들어낸다.
그리고 pow함수를 통해 결과값을 계산하여 받아낸다.
pow(a,b)는 a의 b승을 의미한다.
(math.h 헤더에 존재한다.)
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
자료구조의 중요성(퀵 정렬, 이진 탐색의 이용) (0) | 2016.03.25 |
---|---|
재귀 함수를 이용한 순열(Permutation) 알고리즘 (0) | 2016.03.19 |
각 자릿수 내림차순 정렬 (0) | 2016.03.01 |
문자열 뒤집기 응용 (0) | 2016.03.01 |
1,2,3을 이용하여 값 구하기 (0) | 2016.02.23 |