728x90

문제

성원이는 수학을 정말 못 하는 고등학생이다. 수학을 못하는 대신 근성과 팔 힘이 뛰어난 성원이는 수학 시험에서 수학 지식을 사용하지 않고 근성과 체력을 사용해 문제를 푼다. 지난 시험에서는 아래 사진에 나와있는 문제를 근성과 체력을 사용해 열심히 풀었지만 사진에서 볼 수 있듯이 틀려버리고 말았다!

 

결국 이 문제는 틀려버렸지만 성원이는 여전히 자신의 체력에 강한 자신감을 갖고 있다. 어떤 어려운 문제가 나와도 이런 식으로 근성과 체력을 사용하면 다 풀 수 있으니 이 방법은 최고의 방법이라고 생각하고 있다.

성원이의 친구 형석이는 근성과 체력으로 수학 문제를 푸는 것은 굉장히 무식한 방법이라고 생각한다. 형석이는 수학을 공부하면 문제를 훨씬 빨리 풀 수 있다는 것을 알려주기 위해 위 사진에 나와있는 문제를 갖고 성원이와 퀴즈 내기를 하기로 했다. 위 사진의 문제를 다시 정리하면 아래와 같다.

 

"한 변의 길이가 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

 

15894번: 수학은 체육과목 입니다

성원이는 수학을 정말 못 하는 고등학생이다. 수학을 못하는 대신 근성과 팔 힘이 뛰어난 성원이는 수학 시험에서 수학 지식을 사용하지 않고 근성과 체력을 사용해 문제를 푼다. 지난 시험에서

www.acmicpc.net

 


 

문제 해결 방법

  • [단계별로 풀어보기] 문제집에 새로 추가된 문제이다.
  • 규칙을 찾으면 쉽게 풀 수 있는 문제이다. 
입력 받은 n 값에 따른 세로 길이와 가로 길이의 총합 변화를 보고 규칙을 발견하면 된다.

 

세로 길이의 총합은 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 생략 가능
728x90