728x90
반응형
『목차』
0. 개요
1. 문제
2. 풀이
3. 코드
0. 개요
수학, 구현, 사칙연산 문제. 정수 자료형의 표현 범위를 알고 있다면, 쉽게 풀 수 있다.
1. 문제
https://www.acmicpc.net/problem/11382
11382번: 꼬마 정민
첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.
www.acmicpc.net
[문제]
꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다!
[입력]
첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.
[출력]
A+B+C의 값을 출력한다.
[예제 입력 1]
77 77 7777
[예제 출력 1]
7931
반응형
2. 풀이
int 자료형의 표현범위는 4byte = 32bit = $2^{32}$ 이고, long 자료형의 표현범위는 8byte = 64bit = $2^{64}$ 이다.
10진수와 2진수 사이의 상관관계 살펴보면, $10^3 = 2^{10} = 1000$ 이라 볼 수 있다.
(서로 정확히 일치하는 값은 아니지만, 편의상 $=$ 기호를 사용하였다.)
주어진 입력값은 $10^{12} = 2^{40}$ 이하의 값이므로, int 자료형의 표현범위를 넘어선다.
따라서, int 대신 long 자료형을 사용하여 덧셈연산을 진행하여야 한다.
3. 코드
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
/* Faster */
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
/* Input */
long a, b, c; cin >> a >> b >> c;
/* Output */
cout << a + b + c;
/* Return */
return 0;
}
/* 10의 12승 = 약 2의 40승. 따라서, int로 표현할 수 있는 범위를 넘어선다. */
728x90
반응형
'⌨️CS-PS > 백준_수학&구현' 카테고리의 다른 글
[Baekjoon/백준][1929][C/C++] 소수 구하기 (0) | 2023.05.03 |
---|---|
[Baekjoon/백준][25314][C/C++] 코딩은 체육과목입니다 (0) | 2023.05.02 |
[Baekjoon/백준][4344][C/C++] 평균은 넘겠지 (0) | 2023.02.07 |
[Baekjoon/백준][3052][C/C++] 나머지 (0) | 2023.01.31 |
[Baekjoon/백준][2869][C/C++] 달팽이는 올라가고 싶다 (0) | 2023.01.29 |