首页 > 试题广场 >

数列的和

[编程题]数列的和
  • 热度指数:15229 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

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


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


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

输入

81 4
2 2

输出

94.73
3.41
package main

import (
    "fmt"
    "math"
)

func main() {
    var n,m float64
    for{
        _,err:=fmt.Scan(&n,&m)
        if err!=nil{
            break
        }
        var sum float64
        for m>0{
            sum+=n
            n=math.Sqrt(n)
            m--
        }
        fmt.Printf("%.2f\n",sum)
    }
}

发表于 2023-03-04 19:35:28 回复(0)
package main

import (
	"errors"
	"fmt"
	"io"
)

func main() {
	var n, m int
	var num int
	var err error
	num, err = fmt.Scanln(&n, &m)
	for  num != 0 && err != errors.New(io.EOF.Error()) {
		sum := 0.0
		var tmp float64 = float64(n)
		//求tmp平方根
		for i := 0; i < m; i++ {
			sum += tmp
			tmp = mySqrt(tmp)
			if tmp < 0.0001 {
				goto next //精度要求哦i
			}
		}
		fmt.Printf("%.2f\n", sum)
	next:
		num, err = fmt.Scanln(&n, &m)
	}
}

//牛顿迭代法  f(x)=x*x - C   求零点
func mySqrt(x float64) float64 {

	y, check := 1.0, 0.0
	fx := float64(x)
	y = (fx/y + y) / 2.0
	check = y*y - fx
	for check > 0.001 {
		y = (fx/y + y) / 2.0
		check = y*y - fx
	}
	return y
}

发表于 2022-01-07 09:59:05 回复(0)