文章

【GESP】C++一级练习 luogu-P1035, [NOIP2002 普及组] 级数求和

GESP一级练习,循环和基本运算练习,难度★☆☆☆☆。

luogu-P1035

题目要求

题目描述

已知:$S_n= 1+\dfrac{1}{2}+\dfrac{1}{3}+…+\dfrac{1}{n}$。显然对于任意一个整数 $k$,当 $n$ 足够大的时候,$S_n>k$。

现给出一个整数 $k$,要求计算出一个最小的 $n$,使得 $S_n>k$。

输入格式

一个正整数 $k$。

输出格式

一个正整数 $n$。

样例输入 #1

1
1

样例输出 #1

1
2

数据范围

对于 $100\%$ 的数据,$1\le k \le 15$。


题目分析

本题目要求我们根据输入的整数$k$,计算并输出一个最小的$n$,使得$S_n>k$。根据题目描述,我们需要:

  1. 初始化$n$为0,然后使用for循环来计算$n$,使得$S_n$不超过$k$。
  2. 在每次循环中,我们将$S_n$的值与$k$进行比较,如果$S_n$不超过$k$,则增加$n$的值。
  3. 当$S_n$超过$k$时,我们停止循环并输出当前的$n$值。
  4. 最后,我们输出计算得到的$n$值。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdio>
int main() {
    // 读取输入的整数k
    int k;
    scanf("%d", &k);
    // 初始化n为0
    int n = 0;
    // 使用for循环来计算n,使得a不超过k
    for (double a = 0; a <= k; a += 1.0 / n) {
        // 每次循环增加n的值
        n++;
    }
    // 输出计算得到的n
    printf("%d", n);
    return 0;
}

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

题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

本文由作者按照 CC BY 4.0 进行授权