计算分数加减表达式的值

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

按分母奇偶决定正负号,线性累加交错调和级数。

OJ: noi_openjudge

题目 ID: ch0105-33

难度:入门

标签:循环数学模拟python

日期: 2026-07-30 23:01

题意

计算交错级数 11/2+1/31/4++(1)n1/n1-1/2+1/3-1/4+\cdots+(-1)^{n-1}/n,结果保留四位小数。

思路

ii 项的分母就是 ii。奇数项为正、偶数项为负,因此可由 denominator % 2 决定 sign,然后累加 sign / denominator

代码

Python代码

python
term_count = int(input())
total = 0.0

for denominator in range(1, term_count + 1):
    sign = 1 if denominator % 2 else -1
    total += sign / denominator

print(f"{total:.4f}")

C++代码

cpp
#include <cstdio>


int main(){
    int n;
    scanf("%d",&n);
    double sum = 0;
    int flag = 1;
    int i;
    for (i=1;i<=n;i++){
        sum += flag*1.0/i;
        flag *= -1;
    }
    printf("%0.4lf\n",sum);

    return 0;
}

复杂度

时间复杂度为 O(n)O(n),额外空间复杂度为 O(1)O(1)

总结

交错求和中,项号的奇偶性通常就是最直接的符号状态。