18991 实验1.2 调和级数求和

Description
求调和级数前k项之和(1+1/2+1/3+...+1/k),输入整数k>0,输出两种调和级数前k项和, 前一种是从左到右求和;后一种是从右到左求和(使用双精度double类型精确到小数点后14位)。



输入格式
实验输入数据格式 m(整数,实验数据总数) k1(整数,调和级数项数) k2(整数,调和级数项数) ... km(整数,调和级数项数)


输出格式
实验输出数据格式 x1(实数,k1项调和级数从左到右求和) y1(实数,k1项调和级数从右到左求和) x2(实数,k2项调和级数从左到右求和) y2(实数,k2项调和级数从右到左求和) ... xm(实数,km项调和级数从左到右求和) ym(实数,km项调和级数从右到左求和)



输入样例
3 10 100 1000



输出样例
2.92896825396825 2.92896825396825 5.18737751763962 5.18737751763962 7.48547086055034 7.48547086055034
#include<cstdio>

#include<cmath>


int main()

{
    int n=0;
    int k=0;
    double result=0;
    double result2=0;
    double rt[100];
    double rT[100];
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&k);
        for(double i=1;i<=k;i++){
            result = (1/i)+result;
        }
        for(double i=k;i>=1;i--){
            result2 = (1/i)+result2;
        }
        rt[i] = result;
        rT[i] = result2;
        result = 0;
        result2 = 0;
    }

    for(int i=0;i<n;i++){
            if(i==n-1)        printf("%.14f %.14f",rt[i],rT[i]);
       else  printf("%.14f %.14f\n",rt[i],rT[i]);
    }


    return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值