문제
정수 X가 주어진다. 정수 X는 항상 8진수, 10진수, 16진수 중에 하나이다.
8진수인 경우에는 수의 앞에 0이 주어지고, 16진수인 경우에는 0x가 주어진다.
X를 10진수로 바꿔서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 X가 주어진다. X는 10진수로 바꿨을 때, 1,000,000보다 작거나 같은 자연수이다. 16진수인 경우 알파벳은 소문자로만 이루어져 있다.
출력
첫째 줄에 입력받은 X를 10진수로 바꿔서 출력한다.
예제 입력 1
10 |
예제 출력 1
10 |
예제 입력 2
010 |
예제 출력 2
8 |
예제 입력 3
0x10 |
예제 출력 3
16 |
예제 입력 4
0x3f6 |
예제 출력 4
1014 |
더보기
Solution
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int main(void)
{
int X=0;
char number[15]={'\0', };
scanf("%s", number);
if(strncmp(number,"0x",2)==0)
for(int i=2;i<strlen(number);i++)
{
X*=16;
X+=isdigit(number[i])?number[i]-'0':number[i]+10-'a';
}
else if(number[0]=='0')
for(int i=1;i<strlen(number);i++)
{
X*=8;
X+=number[i]-'0';
}
else
X=atoi(number);
printf("%d\n", X);
return 0;
}
728x90
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 2921번: 도미노 (0) | 2020.10.26 |
---|---|
<백준 알고리즘> 11966번: 2의 제곱인가? (0) | 2020.10.26 |
<백준 알고리즘> 2959번: 거북이 (0) | 2020.10.26 |
<백준 알고리즘> 1225번: 이상한 곱셈 (0) | 2020.10.26 |
<백준 알고리즘> 5032번: 탄산 음료 (0) | 2020.10.25 |