본문 바로가기

Algorithm/Dynamic Programming

Baekjoon 1964 오각형, 오각형, 오각형...

Link https://www.acmicpc.net/problem/1964

소스결과 1988 KB / 36 ms

출처 Baekjoon

언어 C++ 17

분류 수학

 

설명

그림과 같은 오각형의 점의 개수를 45678로 나눈 나머지를 출력한다.

 

그림 속 값이 늘어나는 일정한 규칙을 찾자.

과거 도형과 겹치는 부분을 제외하면 길이가 1 늘어난 변이 3개 존재하고 겹치는 점이 2개 존재한다.

% 연산자의 특성을 고려해 결과값을 계산해 나가면 된다.

 

알고리즘

1. n을 입력 받는다.

2. 현재까지의 오각형 점의 수를 45678로 나눈 값 + 이번에 새로 추가된 점의 수 % 45678을 현재 5각형의 수로 정한다. 초기값은 5

3. 출력한다.

 

소스코드

#include <iostream>

using namespace std;

const int MAX = 45678;

int main()
{
	int n;
	int res = 5;
	int size = 1;

	cin >> n;

	for (int i = 1; i < n; i++)
		res = (res + (i + 2) + ((i + 1) * 2)) % MAX;

	cout << res;

	return 0;
}

'Algorithm > Dynamic Programming' 카테고리의 다른 글

Baekjoon 5573 산책  (0) 2019.08.19
Baekjoon 5569 출근경로  (0) 2019.08.19
Baekjoon 1904 01타일  (0) 2019.04.01
BaekJoon 2752 보드게임  (0) 2019.01.31
BaekJoon 1912 연속합  (0) 2019.01.14