https://www.acmicpc.net/problem/2745
방법 1 : 각 자리의 가중치를 구해서 더하기
1
2
3
4
5
6
7
8
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
|
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
String num = st.nextToken();
int multiplier = Integer.parseInt(st.nextToken());
int length = num.length();
double iDecimal = 0;
for (int i = 0; i < length; i++) {
char charSingleFromBehind = num.charAt(length - 1 - i);
int iSingleDecimal = 0;
if (charSingleFromBehind >= 'A') {
iSingleDecimal = charSingleFromBehind - 'A' + 10;
} else {
iSingleDecimal = charSingleFromBehind - '0';
}
iDecimal += (iSingleDecimal) * Math.pow(multiplier, i);
}
System.out.println((int) iDecimal);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Colored by Color Scripter
|
방법 2: 앞자리부터 자릿수를 더하고 전체에 x 곱해주기 (c++)
1
2
3
4
5
6
7
8
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
|
#include <iostream>
#include <cmath>
using namespace std;
int nbase_to_decimal(string n, int x)
{
int decimal = 0;
// ABC(x) = A * x^2 + B * X^1 + C
for (int i = 0; i < n.size(); i++)
{
decimal *= x;
decimal += (n[i] >= 'A') ? n[i] - 'A' + 10 : n[i] - '0';
}
return decimal;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string N;
int B;
cin >> N;
cin >> B;
cout << nbase_to_decimal(N, B);
return 0;
}
Colored by Color Scripter
|
진법 변환2 문제와 반대로,
B진법 수 N을 10진법으로 변환하는 문제.
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]11653번: 소인수분해(java, c++) (0) | 2019.09.25 |
---|---|
[BOJ]11576번: Base Conversion(java, c++) (0) | 2019.09.25 |
[BOJ]11005번: 진법 변환 2(java, c++) (0) | 2019.09.25 |
[BOJ]17103번: 골드바흐 파티션(java, c++) (0) | 2019.09.24 |
[BOJ]2089번: -2진수(java, c++) (0) | 2019.09.23 |
댓글