1.1 等 比 数 列

                                 1.1  等 比 数 列

1.1.1 题目内容

已知 q 与 n,求等比数列之和: 1+q+q^{2}+q{_{}}^{3}+q^{4}+...+q^{n}

输入描述:

输入数据不多于 50 对,每对数据含有一个整数 n(1≤n≤20)、一个小数q(0<q<2)。

输出描述:

对于每组数据 n 和 q,计算其等比数列的和,精确到小数点后 3 位,每个计算结果应单独占一行。

输入样例 

6 0.3 5 1.3 

输出样例 

1.428 
12.756 

直接做:

#include<iostream>
#include <cmath>
using namespace std;
int main()
{
    cout.precision(3);
    int n,i;
    double q,sum;
    while(cin>>n>>q)
   {
       for(i=0;i<=n;i++)
        sum=sum+pow(q,i);
       cout<<fixed<<sum<<endl;
       sum=0.0;                    //重置为0
   }

    return 0;
}

1.1.2 提示

    对于等比数列之和  S_{n}=a_{1}+a_{2}+{a_{3}+...+{a_{n}}^{},有公式 S_{n}=\frac{a_{1}(1-q^{n})}{1-q}( q ≠ 1)。本例要求的等比数列,实际上是有 n +1项,且 a_{1} =1。

       另外,求 x^{y} 的函数是 pow(x,y),它需要“#include <cmath>”。

  本题要求控制小数点后的位数,如果采用 C 语言的 printf 函数来输出,那么控制小数点后的位数形式为“printf("%*.*f", a);”,如“printf("%.3f\n",sum);”。如果采用 C++的 cout输出,那么先用“cout.precision(n);”来设定小数点后保留 n 位,然后,输出时加“fixed”参数,表明是定点输出。

 

#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char* argv[])
{
 //定点输出小数点后 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;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值