分段函数

GitHub跳转原题关系图返回列表

按 x 的三个区间依次选择对应函数并保留三位小数。

OJ: noi_openjudge

题目 ID: ch0104-13

难度:入门

标签:数学条件判断浮点数python

日期: 2026-07-30 23:01

题意

[0,5)[0,5)[5,10)[5,10)[10,20)[10,20) 三个区间计算不同的函数值。

思路

输入已保证范围,因此先判断 x < 5,再判断 x < 10,最后的 else 就是第三段。这样边界 5 和 10 自动落入后一段。

代码

Python代码

python
x = float(input())

if x < 5:
    value = -x + 2.5
elif x < 10:
    value = 2 - 1.5 * (x - 3) ** 2
else:
    value = x / 2 - 1.5

print(f"{value:.3f}")

C++代码

cpp
#include <cstdio>
int main(){
    double x;
    scanf("%lf",&x);
    if (  x < 5){
        printf("%0.3lf",-x+2.5);
    }
    else if( x < 10)
        printf("%0.3lf",2-1.5*(x-3)*(x-3));
    else 
        printf("%0.3lf",x/2-1.5);
    return 0;
}

复杂度

时间复杂度和额外空间复杂度均为 O(1)O(1)

总结

有序区间的分段函数按上界依次判断,能减少重复范围条件。