https://www.acmicpc.net/problem/1731
문제
등차가 정수인 등차수열 (어떤 수에 차례대로 일정한 수를 더해서 이루어지는 수열) 은 2개의 숫자로 나타낼 수 있다. P는 수열의 첫 번째 수이고, Q는 그 다음수가 되기 위해 바로 전의 수에 더해야 하는 수이다. 예를 들어 P=1, Q=2 이면 그 등차수열은 1, 3, 5, 7, ..... 이 된다.
등비가 정수인 등비수열 (어떤 수에서 시작해 차례로 같은 수를 곱하여 만든 수열) 은 등차수열과 비슷하게 2개의 숫자로 나타낼 수 있다. P는 수열의 첫 번째 수이고, Q는 그 다음수가 되기 위해 바로 전의 수에 곱해야 하는 수이다. 예를 들어 P=3, Q=2이면 그 등비수열은 3, 6, 12, ...이 된다.
테디는 세상에서 수학을 제일 좋아해서 매일같이 이 수열이 등차수열인지 등비수열인지 정한다음에 다음 수를 구한다.
어떤 수열이 주어졌을 때, 그 수열의 규칙이 등차수열인지, 등비수열인지 결정한 후에, 다음에 등장할 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 수열의 길이 N이 주어진다. 둘째 줄부터 N개의 줄에 수열의 각 원소가 차례대로 주어진다. 주어지는 수열은 등차수열이나 등비수열 중에 하나다. N은 항상 3 이상 50이하이며, 입력되는 수는 106 이하의 자연수이다.
출력
첫째 줄에 수열의 다음 원소를 출력한다. 이 수는 20억보다 작거나 같은 자연수이다.
예제 입력 1
4
364
843
1322
1801
예제 출력 1
2280
예제 입력 2
8
394
1172
1950
2728
3506
4284
5062
5840
예제 출력 2
6618
예제 입력 3
5
13
117
1053
9477
85293
예제 출력 3
767637
예제 입력 4
4
22
220
2200
22000
예제 출력 4
220000
예제 입력 5
3
250000
500000
1000000
예제 출력 5
2000000
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
using namespace std;
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <functional>
#include <cmath>
#include <map>
#include <set>
#define _CRT_SECURE_NO_WARNINGS
#define INF 987654321
#define ll long long
typedef pair<int, int> PII;
int n;
vector<ll> num;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
ll temp;
cin >> temp;
num.push_back(temp);
}
ll d = num[1] - num[0];
ll r = num[1] / num[0];
if (num[2] == num[1] + d) {
cout << num[num.size() - 1] + d;
}
else if (num[2] == num[1] * r) {
cout << num[num.size() - 1] * r;
}
return 0;
}
|
cs |
728x90
반응형
'🔻PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 11659 구간 합 구하기 4 C++ (2) | 2022.11.13 |
---|---|
[Baekjoon] 백준 2355 시그마 C++ (0) | 2022.11.10 |
[Baekjoon] 백준 11586 지영 공주님의 마법 거울 C++ (0) | 2022.11.05 |
[Baekjoon] 백준 10991 별 찍기 - 16 C++ (0) | 2022.11.02 |
[Baekjoon] 백준 2460 지능형 기차 2 C++ (0) | 2022.10.30 |