前言:
本文为AtCoder Beginner Contest 369 题ABCD详细题解,包括题目大意,详细的解题思路和两种语言描述,觉的有帮助或者写的不错可以点个赞
几天前的比赛拖的有点久了
比赛题目连接:Tasks - AtCoder Beginner Contest 369
目录
题A:
题目大意和解题思路:
题目意思就是说,给定两个整数 A 和 B,要找出有多少个整数 x
使得 A、B、x 这三个数可以排列成等差数列
现在(假设A<=B),就是找出一个x, 使得A - x == B - A == x - B有三种情况:
当A == B的时候,x只有一种情况,就是A == B == x,此时公差d = 0
当A != B的时候,d = B - A, 那么x会有至少两种情况,一种是A - d,一种是B + d
此时需要考虑A和B中间数字个数cnt
cnt为偶数,则中间无法找出一个数字与A,B的差值相等,此时答案为2
cnt为奇数,中间会有一个数字x满足,此时d = x - A == B - x
代码(C++):
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(0);
int a, b;
std::cin >> a >> b;
int res = -1;
if (a == b) {
res = 1;
} else {
int cnt = abs(a - b - 1);
if (cnt % 2 == 0) {
res = 2;
} else {
res = 3;
}
}
std::cout << res << "\n";
}
代码(Python):
def main():
a, b = map(int, input().split())
res = -1
if a == b:
res = 1
else:
cnt = abs(a - b - 1)
if cnt % 2 == 0:
res = 2
else:
res = 3
pri