Official
A - Tiny Arithmetic Sequence Editorial
by
A - Tiny Arithmetic Sequence Editorial
by
penguinman
解法1
\((A_1,A_2,A_3)\) の並び替えは \(6\) 通りあります。それぞれについて等差数列になっているかを判定することで、この問題を解くことができます。
解答例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int A1,A2,A3; cin >> A1 >> A2 >> A3;
string ans = "No";
//(A1,A2,A3)
if(A3-A2 == A2-A1) ans = "Yes";
//(A1,A3,A2)
if(A2-A3 == A3-A1) ans = "Yes";
//(A2,A1,A3)
if(A3-A1 == A1-A2) ans = "Yes";
//(A2,A3,A1)
if(A1-A3 == A3-A2) ans = "Yes";
//(A3,A1,A2)
if(A2-A1 == A1-A3) ans = "Yes";
//(A3,A2,A1)
if(A1-A2 == A2-A3) ans = "Yes";
cout << ans << endl;
}
また、\((a,b,c)\) が等差数列である場合 \((c,b,a)\) も等差数列になることを利用して、場合分けを \(3\) 通りに減らすことも可能です。
解答例 (Python)
A1,A2,A3 = map(int,input().split())
ans = "No"
#(A1,A2,A3)
if A3-A2 == A2-A1:
ans = "Yes"
#(A1,A3,A2)
if A2-A3 == A3-A1:
ans = "Yes"
#(A2,A1,A3)
if A3-A1 == A1-A2:
ans = "Yes"
print(ans)
解法2
等差数列 \((a,b,c)\) は、広義単調増加/減少である必要があります。なぜなら \((b-a)\) と \((c-b)\) の正/負/零が一致している必要があるからです。そのため \((A_1,A_2,A_3)\) を数列として受け取った上で昇順ないし降順にソートし、等差数列になっているかを判定するとより楽に AC することができます。
解答例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> A(3);
cin >> A[0] >> A[1] >> A[2];
sort(A.begin(),A.end());
string ans = "No";
if(A[2]-A[1] == A[1]-A[0]) ans = "Yes";
cout << ans << endl;
}
解答例 (Python)
A = list(map(int,input().split()))
A.sort()
ans = "No"
if A[2]-A[1] == A[1]-A[0]:
ans = "Yes"
print(ans)
posted:
last update:
