728x90
시간 제한 : 2초
메모리 제한 : 128MB
입력
첫째 줄에 수열의 길이 N이 주어진다. 둘째 줄부터 N개의 줄에 수열의 각 원소가 차례대로 주어진다. 주어지는 수열은 등차수열이나 등비수열 중에 하나다. N은 항상 3 이상 50이하이며, 입력되는 수는 10^6 이하의 자연수이다.
출력
첫째 줄에 수열의 다음 원소를 출력한다. 이 수는 20억보다 작거나 같다.
소스코드
#include <iostream> #include <vector> using namespace std; int main(void) { int n; long long q, next; cin >> n; vector<long long> arr(n); for (int i = 0; i < n; i++) cin >> arr[i]; if (arr[0] * arr[2] == arr[1] * arr[1]) { q = arr[1] / arr[0]; next = arr[n - 1] * q; } else { q = arr[1] - arr[0]; next = arr[n - 1] + q; } cout << next; }
Tip
문제가 어려운 건 없다. 등비 수열인지 등차 수열인지 확인하는 작업을 거치면 되는데, 등비 수열을 확인 하는 방법과 등차 수열을 확인하는 방법은 고등학교 수학에서 기초적으로 다루는 내용이다. 실수할 수 있는 부분은, 타입에 따라 계산 과정에서 오버플로우가 발생할 수 있는 점이다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 2436 - 공약수(한국정보올림피아드 2011, KOI 2011 전국본선) (0) | 2018.12.29 |
---|---|
백준] 4597 - 패리티(ACM-ICPC Regionals) (0) | 2018.12.03 |
백준] 2018 - 수들의 합 5 (0) | 2018.11.24 |
백준] 9661 - 돌 게임 7 (0) | 2018.11.10 |
백준] 1992 - 쿼드트리 (0) | 2018.11.04 |