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; }