首页 > 试题广场 >

求数列的和

[问答题]

求数列的和


题目描述:

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

输入

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

输出

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

样例输入

81 4
2 2

样例输出

94.73
3.41

import sys

for line in sys.stdin:
    if len(line.split(' ')) == 2:
        data,numb = [i.strip() for i in line.split(' ')]
        if data.isdigit() and numb.isdigit():
            data,numb = int(data),int(numb)
        else:
            break
        if data < 0:
            break
        sum_b = []
        total = 0
        for i in range(numb):
            sum_b.append(data)
            data = data**0.5
        for x in sum_b:
            total += x
        total = '%.2f'%total
        sys.stdout.write(total)
    else:
        break
题目不难,主要是注意输入的特殊情况。
发表于 2019-09-10 13:45:55 回复(0)
public static void main(String[] args) {
        System.out.println(getSum(81,4));
    }
    private static double getSum(double n,int m){
        double sum=0;
        int count=0;
        while (true){
            if (count>=m){
                break;
            }
            sum+=n;
            n=Math.sqrt(n);
            count++;
        }
        return sum;
    }
结果:94.73205080756888
发表于 2019-09-08 15:32:29 回复(0)
import math
def sumsqrt(n,m):
    A = []
    #A[0] = n
    A.append(n)
    if m==1:
        SumQ = A[0]
    else:
        SumQ = A[0]
        for i in range(1,m):
            #A[i] = math.sqrt(A[i-1])
            A.append( math.sqrt(A[i-1]))
            SumQ += A[i]
    return SumQ
    
print(sumsqrt(81,4))
print(sumsqrt(2,2))


发表于 2018-08-10 21:46:32 回复(0)
def f(n,m):
    sum = 0
    for i in range(m):
         x = n**((0.5)**i)
         sum += x
    return "the result is %.2f" % sum

发表于 2018-06-05 20:50:03 回复(0)
import math
while True:
    try:
        n,m = map(int, input().split())
        # print(n,m)
        sum = n
        if m>1:
            for i in range(m-1):
                n = math.sqrt(n)
                # print(n)
                sum+=n
        print("%.2f"%sum)
    except:
        break


编辑于 2022-09-13 15:50:45 回复(1)
 class Program
    {
        //数列求和
        static void Main(string[] args)
        {
            //输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成
            Console.WriteLine("Please enter multiple sets of data, one for each group, consisting of two integers n (n < 10000) and m (m < 1000):");
            string outs="";
            while (true)
            {
                string s = Console.ReadLine();
                if(string.IsNullOrEmpty(s))
                {
                    break;
                }
                else
                {
                    int index = s.IndexOf(" ");
                    int.TryParse(s.Substring(0, index),out int n);
                    int.TryParse(s.Substring(index + 1), out int m);
                    outs = outs + getSum(n, m)+" ";
                }
            }
            Console.WriteLine(outs);
            Console.ReadKey();
        }

        static double getSum(int n, int m)
        {
            double sum = 0;
            double k = n;
            while (m > 0)
            {
                sum = sum + k;
                k = Math.Sqrt(k);
                m--;
            }
            return Math.Round(sum,2);
        }
    }


编辑于 2019-09-20 11:15:37 回复(0)
vky头像 vky
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int N =sc.nextInt();   //第一个数
            int M = sc.nextInt();    //项数
            double n = N;
            double sum = N;
        
            for(int i=1;i<M;i++) {
                n = Math.sqrt(n);
                sum += n;
            }

            System.out.println(String.format("%.2f",sum));
        }
    }
}

发表于 2018-09-23 15:18:44 回复(0)
Func<int, int, string> calc = (n, m) => 
{  
    int j = 1;  
    double ret = n, sum = n;   
    while (m > j++)  
    {  
        sum = Math.Sqrt(sum);  
        ret += sum; 
    }  
    return ret.ToString("F2"); 
};   Console.WriteLine(calc(81,4));

编辑于 2018-08-24 10:28:17 回复(0)
function arr(n, m) {
            var sum = 0;
            if(!(typeof n === 'number') || n>=10000 || !(typeof m === 'number') || m>=1000) return;
            for(var i = 1; i <= m;i++) {
                sum += n;
                n = Math.sqrt(n);
            }
            return sum.toFixed(2);
        }
发表于 2018-08-03 13:51:43 回复(0)
function arr(beginNum,times){
    var sum=0;
    for (;times>0;times--) {
        sum+=beginNum;  beginNum=Math.pow(beginNum,0.5);
    }
    return sum.toFixed(2);
}

编辑于 2018-06-09 17:06:41 回复(2)
import numpy as np
def f(n,m):
    L = [n]
    while len(L) < m:
        n = np.sqrt(n)
        L.append(n)
    s = round(sum(L),2)
    return s


发表于 2018-05-28 15:05:20 回复(0)
第二项为81开平方为9,第三项为9开平方为3,
发表于 2018-05-24 22:48:01 回复(0)