计算分数加减表达式的值

计算分数加减表达式的值

GESP一级知识点循环和条件判断应用,基础练习。

luogu-B2070

题目要求

描述

>Sn=112+1314+1516+...+(1)n1×1n> >S_n = 1 - \frac{1}{2} + \frac{1}{3} - \frac{1}{4} + \frac{1}{5} - \frac{1}{6} +...+(-1)^{n-1} \times \frac{1}{n} >

输入一个整数 nn,求 SnS_n

输入

输入为一行,含一个正整数 nn,其中 1n10001 \leq n \leq 1000

输出

输出为一行,为 SnS_n 的值,结果保留小数点后 44 位小数。

输入样例-1

2

输出样例-1

0.5000


题目分析

  • 读取整数 nn 的值
  • 初始化变量 ansans,用于存储结果
  • 遍历从 11nn 的所有整数 ii
  • 根据 ii 的奇偶性,决定是否将 1/i1/i 加到或减去 ansans
  • 输出 ansans 的值,保留小数点后 44

{% include custom/custom-post-content-inner.html %}


示例代码

#include <cstdio>
using namespace std;
int main() {
    int n; // 定义一个整数n,用于存储输入的整数
    scanf("%d", &n); // 从输入流中读取n的值
    double ans = 0; // 初始化变量ans,用于存储结果
    for (int i = 1; i <= n; i++) { // 遍历从1到n的所有整数i
        if (i % 2 != 0) { // 如果i是奇数
            ans += 1.0 / i; // 将1/i加到ans上
        }
        if (i % 2 == 0) { // 如果i是偶数
            ans -= 1.0 / i; // 将1/i减去ans
        }
    }
    printf("%.4f", ans); // 输出ans的值,保留小数点后4位
    return 0; // 返回0,表示程序执行成功
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on