https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
찾은 반례 : A 11 -> 17 출력
해결 : 알파벳 범위를 제대로 설정함.
코멘트 : 버그가 발생하면 쳐다보기보다는 직접 한줄씩 실행해 보자.
#include <iostream>
#include <stack>
#include <string>
#include <cmath>
using namespace std;
int main()
{
string N;
int B;
char tmp; // string에서 char로 변경
cin >> N >> B;
int num = 0;
int digit = 0;
int sum = 0;
for (int i = N.length() - 1; i >= 0; i--) // 조건을 >=로 변경
{
tmp = N[i];
if (B > 10)
{
if (tmp >= 'A')
{
num = (tmp - 'A' + 10); // 문자를 숫자로 변환
}
else
{
num = (tmp - '0');
}
sum += num * pow(B, digit);
}
else
{
sum += (tmp - '0') * pow(B, digit); // 문자를 숫자로 변환
}
digit++;
}
cout << sum;
return 0;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++/백준 19532번] 수학은 비대면 강의입니다. (0) | 2023.08.03 |
---|---|
[C++/백준 2231번] 분해합 (0) | 2023.08.03 |
[C++/백준 2941번] 크로아티아 알파벳 (0) | 2023.07.24 |
[C++/백준 10988번] 팰린드롬인지 확인하기 (0) | 2023.07.24 |
[C++/백준 1152번] 단어의 개수 (0) | 2023.07.17 |