首页 > 试题广场 >

牛牛学数列2

[编程题]牛牛学数列2
  • 热度指数:49889 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}牛牛开始学习数列啦。这次他想计算如下数列的前 n 项和:

\displaystyle H(n) = 1 + \frac{1}{2} + \frac{1}{3} + \cdots + \frac{1}{n}

\hspace{15pt}请计算并输出 H(n) 的值。

输入描述:
\hspace{15pt}在一行中输入一个整数 n,满足 1 \leqq n \leqq 1000


输出描述:
\hspace{15pt}输出一个浮点数,表示 H(n) 的值。注意,由于浮点数存在误差,只要您的答案与标准答案之间的误差不超过 10^{-5},您的答案就会被认为是正确的。
示例1

输入

2

输出

1.500000

说明

H(2)=1+\tfrac{1}{2}=1.5
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    double sum = 0.0;
    for (int i = 1; i <= n; i ++ )
    {
        sum += 1.0 / i;
    }
    printf("%.6lf", sum);
}

发表于 2022-02-26 14:17:36 回复(0)
小心C++中的整除,此题计算前需要转换类型或改为浮点数。
发表于 2026-01-21 21:05:14 回复(0)
n=int(input())
sum=0
for i in range(1,n+1):
    sum+=1/i
print('{:.6f}'.format(sum))

发表于 2023-01-19 11:07:35 回复(0)
n = int(input())
a = 1
he = 0.0
while a <= n:
    he = he + 1/a
    a = a + 1
print("{:.6f}".format(he))
发表于 2023-05-06 17:09:06 回复(0)
n = int(input())
print(sum(float(1 / i) for i in range(1, n + 1)))
发表于 2026-01-08 17:34:24 回复(0)
#include <iostream>
#include <cassert>
#include <iomanip>

double sum(int a)
{
    if (a == 1)
    {
        return 1.0;
    }
    return sum(a - 1) + 1.0 / float(a);
}

int main()
{
    int n;
    std::cin >> n;
    assert(n >= 1 && n <= 1000);

    // // 方法1 for循环计算
    // double sum = 0;
    // for (int i = 1; i <= n; i++)
    // {
    //     sum += 1.0 / float(i);
    // }
    // std::cout << std::fixed << std::setprecision(6) << sum << std::endl;

    // 方法2 递归计算
    std::cout << std::fixed << std::setprecision(6) << sum(n) << std::endl;

    return 0;
}

发表于 2025-12-30 15:49:26 回复(0)
n=int(input())
p=1<=n<=1000
if p:print(f'{sum(1/i for i in range(1,n+1)):.6f}')
else:print('请满足1≦n≦1000的正整数')

发表于 2025-10-29 15:24:49 回复(0)
#include <stdio.h>

//分析
//分母每次都为1,分母每一次递增1
//写一个for,每次生成一个数,然后把他们加起来
//第一次sum=0,i=1  sum = sum +1.0/1 =0+1=1此时sum==1
//第二次sum=1,i=2  sum = sum +1.0/2 =1+0.5=1.5
//第三次sum=1.5,i=3 sum =sum+1.0/3  =1.5+0.33
//每次sum都会继承上一次的值
int main()
{
    int n =0;
    scanf("%d", &n);
    int i =0;
    double sum = 0;
    for(i = 1; i<= n;i++)
    {
        sum +=1.0/i; //1.0让其不为整型运算
    }
    printf("%lf",sum);
    return 0;
}

编辑于 2024-04-21 02:39:42 回复(0)
#include <stdio.h>

int main() {
    int n=0;
    double sum=0.0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        sum+=1.0/i;
    }
    printf("%.6f",sum);
    return 0;
}

编辑于 2024-02-06 23:39:43 回复(0)
#include<stdio.h>
int main(){
    int n,i;
    double sum=1;
    scanf("%d",&n);
    for(i=1;i<n;i++){
        sum=sum+1.0/(i+1);
    }
    printf("%.6lf",sum);
    return 0;
}

发表于 2022-06-15 08:44:38 回复(0)
n = int(input())
h = 0
for i in range(1,n + 1):
    h += 1 / i
print(h)

发表于 2026-04-19 19:20:23 回复(0)
#include <iomanip>
#include <iostream>
using namespace std;

float sum(int n)
{
    if(n == 1) return 1.0f;    //递归终止条件
    return 1.0f / n + sum(n - 1);
}

int main()
{
    int n;
    cin >> n;
    if(n <= 0) cout << "输入有误" << endl;
    else cout << fixed << setprecision(6) << sum(n) << endl;
}
// 64 位输出请用 printf("%lld")
发表于 2026-04-16 11:55:27 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
double a=0.0;
cin>>n;
for(int i=1;i<=n;i++)
 {
    a+=1.0/i;
 }
 printf("%.6f",a);
 return 0;
}
发表于 2026-03-31 20:22:55 回复(0)
n=int(input())
p=1<=n<=1000
sums=sum(1/i for i in range(1,n+1))
if p:print(f"{sums:.6f}")
else:print("请输入合适的数值")
发表于 2026-03-31 16:28:22 回复(0)
n=int(input())
if n==1:
    print(1)
else:
    a=1
    for i in range(2,n+1):
        a=a+1/i
    print(f"{a:.6f}")
发表于 2026-03-25 18:17:20 回复(0)
#include <stdio.h>

int main() {
    int n=0;
    scanf("%d",&n);
    double h=0;
    int i=0;
    for(i=1;i<=n;i++)
    {
       
       
        h+=1.0/i;
       
    }
    printf("%lf",h);
    return 0;
}

发表于 2026-03-25 17:07:05 回复(0)
#include <stdio.h>

int main() {
   int n,i;
   float sum=0;
   scanf("%d",&n);
   for(i=1;i<n+1;i++){
    sum+=1.0/i;//用1.0是为了触发浮点数除法,用1的话只保留整数部分
   }
   printf("%.6f\n",sum);
   return 0;
}
发表于 2026-03-21 16:25:45 回复(0)
#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    int i;
    double sum = 0.0;
    for (i = 1; i <= n; i++) {
        sum = sum + 1.0 / i;
    }
    printf("%f", sum);
    return 0;
}
发表于 2026-03-20 08:53:10 回复(0)
import java.util.Scanner;

import java.math.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
            BigDecimal bg=new  BigDecimal("1");
            BigDecimal g=new  BigDecimal("0");
           
            int b = in.nextInt();
            while(b>0){
               
                g=g.add(bg.divide(BigDecimal.valueOf(b),6,RoundingMode.HALF_UP));
                b--;
            }
            System.out.println(g);
           
    }
}
发表于 2026-03-19 20:19:20 回复(0)
n=int(input())
a=0
for i in range(n):
    a=a+(i+1)**(-1)
print(f'{a:.7f}')
发表于 2026-03-19 13:13:49 回复(0)