문제
성원이는 수학을 정말 못 하는 고등학생이다. 수학을 못하는 대신 근성과 팔 힘이 뛰어난 성원이는 수학 시험에서 수학 지식을 사용하지 않고 근성과 체력을 사용해 문제를 푼다. 지난 시험에서는 아래 사진에 나와있는 문제를 근성과 체력을 사용해 열심히 풀었지만 사진에서 볼 수 있듯이 틀려버리고 말았다!
결국 이 문제는 틀려버렸지만 성원이는 여전히 자신의 체력에 강한 자신감을 갖고 있다. 어떤 어려운 문제가 나와도 이런 식으로 근성과 체력을 사용하면 다 풀 수 있으니 이 방법은 최고의 방법이라고 생각하고 있다.
성원이의 친구 형석이는 근성과 체력으로 수학 문제를 푸는 것은 굉장히 무식한 방법이라고 생각한다. 형석이는 수학을 공부하면 문제를 훨씬 빨리 풀 수 있다는 것을 알려주기 위해 위 사진에 나와있는 문제를 갖고 성원이와 퀴즈 내기를 하기로 했다. 위 사진의 문제를 다시 정리하면 아래와 같다.
"한 변의 길이가 1인 정사각형을 아래 그림과 같이 겹치지 않게 빈틈없이 계속 붙여 나간다. 가장 아랫부분의 정사각형이 n개가 되었을 때, 실선으로 이루어진 도형의 둘레의 길이를 구하시오."
가장 아랫부분의 정사각형 개수가 주어지면 그에 해당하는 답을 출력하는 프로그램을 만들어 형석이를 도와주자!
입력
첫 번째 줄에 가장 아랫부분의 정사각형 개수 n이 주어진다. ($1 ≤ n ≤ 10^{9}$)
출력
첫 번째 줄에 형석이가 말해야 하는 답을 출력한다.
예제 입력 1
1
예제 출력 1
4
예제 입력 2
3
예제 출력 2
12
출처
University > 전국 대학생 프로그래밍 대회 동아리 연합 > UCPC 2018 예선 A번
알고리즘 분류
- 수학
- 사칙연산
문제 출처
https://www.acmicpc.net/problem/15894
문제 해결 방법
- [단계별로 풀어보기] 문제집에 새로 추가된 문제이다.
- 규칙을 찾으면 쉽게 풀 수 있는 문제이다.
세로 길이의 총합은 n × 2 이다.
가로 길이의 총합 또한 n × 2 이다.
따라서 (n × 2) + (n × 2) =(n × 2) × 2 = n × 4 가 문제의 정답이 된다.
입력 변수의 범위 값 확인하기
- 한 가지 주의할 점이 있는데, @n@의 범위가 $1 ≤ n ≤ 10^{9}$ 이라는 것이다.
- @int@ 정수 자료형은 약 21억(2,147,483,647)의 숫자까지 표현할 수 있다. 문제의 정답은 @n * 4@이므로, @int@ 자료형의 최댓값이 입력으로 들어오게 되면 2,147,483,647 × 4 = 8,589,934,588가 되어, @int@ 정수형의 범위를 뛰어넘게 된다. 따라서 @int@ 자료형이 아닌 @long long@ 자료형을 써줘야 한다.
코드
#include <iostream>
using namespace std;
long long n;
void Input() {
cin >> n;
}
long long Solution(long long n) {
return (n * 2) * 2;
}
void Output() {
cout << Solution(n) << '\n';
}
void Solve() {
Input();
Output();
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
Solve();
return 0;
}
채점 결과
참고
- [단계별로 풀어보기] > [기하: 직사각형과 삼각형]
- 브론즈III
정수 자료형의 크기 및 범위 (LLP64/IL32P64, Windows)
자료형 | 크기 | 범위 | |
char signed char |
1바이트, 8비트 | -128 ~ 127 | |
unsigned char | 1바이트, 8비트 | 0 ~ 255 | |
short short int |
2바이트, 16비트 | -32,768 ~ 32,767 | int 생략 가능 |
unsigned short unsigned short int |
2바이트, 16비트 | 0 ~ 65,535 | int 생략 가능 |
int signed int |
4바이트, 32비트 | -2,147,483,648 ~ 2,147,483,647 | |
unsigned unsigned int |
4바이트, 32비트 | 0 ~ 4,294,967,295 | int 생략 가능 |
long long int signed long signed long int |
4바이트, 32비트 | -2,147,483,648 ~ 2,147,483,647 | int 생략 가능 |
unsigned long unsigned long int |
4바이트, 32비트 | 0 ~ 4,294,967,295 | int 생략 가능 |
long long long long int signed long long signed long long int |
8바이트, 64비트 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | int 생략 가능 |
unsigned long long unsigned long long int |
8바이트, 64비트 | 0 ~ 18,446,744,073,709,551,615 | int 생략 가능 |
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ-2903][C++] 중앙 이동 알고리즘 (0) | 2023.06.19 |
---|---|
[BOJ-2720][C++] 세탁소 사장 동혁 (0) | 2023.06.18 |
[BOJ-11005][C++] 진법 변환 2 (0) | 2023.06.17 |
[BOJ-2745][C++] 진법 변환 (0) | 2023.06.16 |
[BOJ-9506][C++] 약수들의 합 (0) | 2023.03.11 |
[BOJ-2501][C++] 약수 구하기 (0) | 2023.03.11 |
[BOJ-27866][C++] 문자와 문자열 (0) | 2023.03.11 |
[BOJ-25206][C++] 너의 평점은 (0) | 2023.03.01 |