https://www.acmicpc.net/problem/1964
위 문제는 N단계 후 오각형의 점이 몇 개인지 알아내는 문제이다.
위 문제를 풀기 위해 저는 두 가지 방법으로 나누어 생각했습니다.
----------------------------------------------------------------------
1). 외곽의 점은 몇 개인가
2). 그 외의 점들, 즉 안쪽에 있는 오각형의 점들은 몇 개인가.
----------------------------------------------------------------------
1)번의 경우 각 단계마다 오각형의 각 변에 점이 1개씩 추가가 된다.
쉽게 말해 매 단계 마다 점이 5개씩 늘어난다.
즉 N단계일 때 가장 바깥쪽의 점의 개수는 N * 5가 된다.
2)번의 경우 1단계에서는 안쪽에 점이 없고,
2단계부터 2개
3단계는 (2 + 3)개
4단계는 (2 + 3 + 3)개 가 된다.
즉, 2단계 이후부터 안쪽에 있는 변의 개수만큼 점이 추가가 된다.
1), 2) 번의 경우로 나누어 해당 원리에 맞게 코드를 짜면 아래 코드가 나온다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
#define ll long long int
int main()
{
int N;
scanf("%d", &N);
ll sum = (5 * N) % 45678;
for (int i = 2; i <= N; ++i)
{
sum = (sum + ((i - 2) * 3 + 2)) % 45678;
}
printf("%lld", sum);
return 0;
}
|
cs |
'Problem Solving' 카테고리의 다른 글
[BOJ 2960] 에라토스테네스의 체 (0) | 2019.12.30 |
---|---|
[BOJ 1629] 곱셈 (0) | 2019.03.17 |
[BOJ 1978] 소수 찾기 (0) | 2019.03.16 |
[BOJ 1331] 나이트투어 (0) | 2019.03.10 |
[BOJ 1037] 약수 (0) | 2019.03.10 |