ABC369A 369
原题链接:A - 369
Tag:数学、模拟
题目描述
给你两个整数 \(A\) 和 \(B\) 。
有多少个整数 \(x\) 满足以下条件?
- 条件:可以将三个整数 \(A\) 、 \(B\) 和 \(x\) 按一定顺序排列,组成一个算术序列。
当且仅当 \(q-p\) 等于 \(r-q\) 时,三个整数 \(p\) , \(q\) , \(r\) 按此顺序排列的序列是算术序列。
数据说明: \(1 \leq A,B \leq 100\)
分析
首先考虑一种最显而易见的情况,即 \(a = b\) 时, 这个时候显然只有一种答案 \(x = A\)。
之后我们考虑 \(a \neq b\) 的情况。 我们观察给出的「算数序列」的定义, 不难发现一个算数序列成立当且仅当三个数组成了等差数列, 问题转变为,给定 \(A.B\) 之后找一个 \(x\) 使得他们三个能够组成一个等差数列。
那么有一个显然的观察,当我们确定 \([A,B]\) 这个区间之后, 在这个区间的左边和右边必定能分别找到一个符合条件的点, 因此答案至少为 \(2\)。 那么在什么时候中间也能找到呢? 如果在中间要找到的话 \(x = \frac{A+B}{2}\), 不难发现这个点只有在 \(A+B\) 为偶数时才存在。
代码实现
void NeverSayNever() {
int a, b;
cin >> a >> b;
if (a == b) {
cout << 1 << endl;
} else if ((a + b) & 1) {
cout << 2 << endl;
} else {
cout << 3 << endl;
}
}
日志
本页面创建于 2024/09/17 19:01