1 条题解

  • 0
    @ 2026-4-5 18:15:37

    题目题解

    问题描述

    给定整数 nn,求满足 a=nba = n - b有序正整数对 (a,b)(a, b) 的数量。
    其中 aabb 均为正整数,即 a1a \ge 1b1b \ge 1

    解题思路

    由等式 a=nba = n - b 可知,一旦 bb 确定,aa 就被唯一确定。
    同时,aabb 必须为正整数,因此:

    • b1b \ge 1
    • a=nb1bn1a = n - b \ge 1 \quad \Rightarrow \quad b \le n-1

    所以 bb 的取值范围是:

    1bn11 \le b \le n-1

    bb 可以取从 11n1n-1 的每一个整数,共有 n1n-1 个不同的取值。
    每个 bb 对应唯一的 a=nba = n - b,且 aa 自动满足 a1a \ge 1
    因此,有序对 (a,b)(a,b) 的总数就是 n1n-1

    形式化推导

    $$\text{答案} = \#\{ b \in \mathbb{Z}^+ \mid 1 \le b \le n-1 \} = n-1 $$

    验证样例

    • n=2n = 2 时,n1=1n-1 = 1,对应 (1,1)(1,1)
    • n=4n = 4 时,n1=3n-1 = 3,对应 (3,1), (2,2), (1,3)(3,1),\ (2,2),\ (1,3)
    • n=6n = 6 时,n1=5n-1 = 5

    与题目输出完全一致。

    复杂度分析

    每个测试用例 O(1)O(1) 时间,总时间复杂度 O(t)O(t),空间复杂度 O(1)O(1)

    参考代码(标程)

    #include <iostream>
    using namespace std;
    
    int main() {
        int t, n;
        cin >> t;
        while (t--) {
            cin >> n;
            cout << n - 1 << endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    6411
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    1
    已通过
    1
    上传者