OlveraeUNSW
返回题目列表
COMP2521

复杂度 · 数三角双循环的次数

复杂度 · 数一数这段双循环跑几步

复杂度分析的基本功是「会数一段代码到底执行多少次」。下面这段经典的「三角形」双重循环:

for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++)
        ops++;

读入 n,输出 ops++ 总共执行的次数。

请补全 countOps:可以老老实实用两层循环数,也可以用公式。

关键推导:外层 i 固定时,内层从 i+1 到 n-1 跑 n-1-i 次。把 i=0..n-1 全加起来 = (n-1)+(n-2)+…+1+0 = n(n-1)/2。这正是为什么这类双循环是 O(n²)(n(n-1)/2 的最高阶是 n²)。

输入

  • 一行:整数 n(0 ≤ n ≤ 100000)。

输出

  • 一行:ops++ 执行的总次数。

示例:输入 5 → 输出 10(4+3+2+1+0)。

样例

stdin
5
期望输出
10
stdin
3
期望输出
3
c-dcc
14