n == 1 일때 답이 여러개로 나올 수 있으므로 A출력 .
n == 2 일때 arr[0]과 arr[1]이 같다면 arr[2]도 같을것 이므로 arr[0] 출력 그게아니라면 답이 여러개일 수 있으므로 A 출력.
ax0+b=x1, ax1+b=x2→a(x1−x0)=x2−x1 이므로
a = (arr[2] - arr[1]) / (arr[1] - arr[0]) 이다 0으로 나누어진다면 a = 0이고
b = arr[1] - arr[0] a 으로 나올 수 있다.
그 뒤 입력 받은 배열들을 모두 순회하면서 An = An-1 a + b 형식인지 아닌지 확인하고 아니라면 B출력
마지막으로 N번째 수열에 a를 곱하고 b를 더해서 출력하면 끝
#include <string>
#include <vector>
#include<iostream>
#include<memory.h>
#include<map>
#include<algorithm>
#include<queue>
#include<set>
#include<math.h>
using namespace std;
int arr[51];
int main()
{
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
if (n <= 2)
{
if (n == 1)
cout << "A";
else if (n == 2)
{
if (arr[0] == arr[1])
cout << arr[0];
else
cout << "A";
}
return (0);
}
int tmp = arr[1] - arr[0];
int tmp2 = arr[2] - arr[1];
int a;
if (tmp != 0)
a = tmp2 / tmp;
else
a = 0;
int b = arr[1] - a *arr[0];
for (int i = 2; i < n; i++)
{
if (arr[i] != arr[i-1] *a +b)
{
cout << "B";
return (0);
}
}
cout << arr[n - 1] *a +b;
}