题目描述:ios
数列的第一项为n,之后各项为前一项的平方根,求数列的前m项的和。函数
输入描述:测试
输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述。spa
输出描述:code
对于每组输入数据,输出该数列的和,每一个测试实例占一行,要求精度保留2位小数。blog
这里涉及到一个输出精度的控制,咱们知道在这C语言中,控制输出精度能够直接用如下代码。ci
printf("%.2lf\n",sum);
在C++中输出控制精度须要用到std::ios_base::precison,即std::cout.precison()。这个函数是用来控制输出的有效位,以下所示io
double n = 0.001010; cout.precision(4); cout << n << endl;
这个的输出结果就是0.00101。从第一个1开始为第一个有效位,连续输出4个有效位,最后一位的0被省略。这并无达到咱们要设置小数点后位数的要求,因此在查阅了资料后发现结合std::fixed使用能够控制小数点后的位数,使用方法以下:class
double n = 0.001010; cout.precision(4); cout << fixed << n << endl;
这个的输出结果就是0.0010。方法
须要注意的是 cout.precision(4); 后cout的精度一直都是4个有效位,若设置了fixed,就一直控制小数点后的位数。目前尚未消除precision的方法,只能从新设置成新的有效位,可是针对fixed但是经过cout.unsetf( ios::fixed );来消除。