上QQ阅读APP看书,第一时间看更新
3.4 等比数列
3.4.1 链接地址
http://www.realoj.com/网上第71题
3.4.2 题目内容
已知q与n,求等比数列之和:1+q+q2+q3+q4+…+qn。
输入描述:输入数据不多于50对,每对数据含有一个整数n(1≤n≤20)、一个小数q(0<q<2)。
输出描述:对于每组数据n和q,计算其等比数列的和,精确到小数点后3位,每个计算结果应单独占一行。
输入样例
6 0.3 5 1.3
输出样例
1.428 12.756
3.4.3 参考答案
对于等比数列之和Sn =a1+a2+a3+…+an,有公式。本例要求的等比数列,实际上是有n+1项,且a1=1。
另外,求xy的函数是pow(x, y),它需要“#include<cmath>”。
本题要求控制小数点后的位数,如果采用C语言的printf函数来输出,那么控制小数点后的位数形式为“printf("%*.*f", a);”,如“printf("%.3f\n", sum);”。如果采用C++的cout输出,那么先用“cout.precision(n);”来设定小数点后保留n位,然后,输出时加“fixed”参数,表明是定点输出。
#include <iostream> #include <fstream> #include <cmath> using namespace std; int main(int argc, char * argv[]) { ifstream cin("aaa.txt"); //定点输出小数点后3位;否则是输出有效数字3位 cout.precision(3); int n; double q, sum; while(cin>>n>>q) { if(q==1)sum=1+n; else sum=(1-pow(q, n+1))/(1-q); //使用fixed,定点输出,即小数点后的精度是3位 cout<<fixed<<sum<<endl; } return 0; }