Computer Science/Algorithm Problem

백준] 1731 - 추론

TwinParadox 2018. 11. 29. 21:30
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