문제
설명
이것은 많은 if 문이 필요한 문제입니다.
세 가지 주요 범주로 나눌 수 있습니다.
– 숫자를 출력할 때: 시퀀스의 크기가 2이고 같은 숫자일 때 패턴을 만족하는 시퀀스에
– A가 출력되는 경우: 시퀀스의 크기가 1일 경우, 시퀀스의 크기가 2일 경우, 기타 숫자. 어쨌든 다음 숫자를 예측할 수 없으므로 A를 반환해야 합니다.
– B가 출력되는 경우: 시퀀스에 패턴이 없는 경우. 문자 그대로 패턴이 없기 때문에 숫자를 얻을 수 없습니다.
그리고 조건부 분기 태그가 많기 때문에 if 문을 한 줄에 넣거나 개행을 사용하지 않도록 주의하세요!
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> v(N);
for (int i = 0; i < N; i++) {
cin >> v(i);
}
if (N == 1) {
// 수열의 크기가 1인 경우
cout << "A";
return 0;
}
if (N == 2) {
// 수열의 크기가 2이면서 같은 수
if (v(0) == v(1)) cout << v(1);
// 수열의 크기가 2이면서 다른 수일 경우
else cout << "A";
return 0;
}
else {
int a = 0;
if (v(1) - v(0) !
= 0) a = ((v(2) - v(1)) / (v(1) - v(0)));
int b = v(1) - v(0) * a;
for (int i = 1; i < N; i++) {
if (v(i) !
= v(i-1) * a + b) {
// 패턴이 없는 수열인 경우
cout << "B";
return 0;
}
}
// 패턴을 만족하는 수열인 경우
cout << v(N-1) * a + b;
}
return 0;
}