Skip to content

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