列表

详情


ZJ16. 数列的和

描述

数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

输入描述

输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。

输出描述

对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。

示例1

输入:

81 4
2 2

输出:

94.73
3.41

原站题解

C 解法, 执行用时: 10ms, 内存消耗: 372KB, 提交时间: 2020-06-30

#include<stdio.h>
#include<math.h>
int n,m;
double sqr(double n)
{
    double k=1.0;
    while(fabs(k*k-n)>1e-9)
    {
        k=(k+n/k)/2;
    }
    return k;
}
void fun()
{
    while (scanf("%d %d",&n,&m)!=EOF)
    {
      double sum=n*1.0,t=n*1.0;
        for(int i=2;i<=m;i++)
        {
            t=sqr(t);
            sum+=t;
        }
        printf("%.2f\n",sum);
    }
}
int main()
{
    fun();
    return 0;
}

C++14 解法, 执行用时: 10ms, 内存消耗: 376KB, 提交时间: 2020-08-16

#include <stdio.h>
#include <math.h>
int n, m;
double sqr(double n)
{
    double k = 1.0;
    while(fabs(k * k - n) > 1e-9)
    {
        k = (k + n / k) / 2;
    }
    return k;
}
void fun()
{
    while(scanf("%d %d", &n ,&m) != EOF)
    {
        double sum = n * 1.0, t = n * 1.0;
        for(int i = 2; i <= m; i++)
        {
            t = sqr(t);
            sum += t;
        }
        printf("%.2f\n", sum);
    }
}
int main()
{
    fun();
    return 0;
}

上一题