zoukankan      html  css  js  c++  java
  • C++求等比数列之和

    题目内容:已知qn,求等比数列之和:1+q+q2+q3+q4+……+qn。

    输入描述:输入数据不多于50对,每对数据含有一个整数n1<=n<=20)、一个小数q(0<q<2)

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

    题目分析:对于等比数列之和Sn=a1+a2+a3+……+an,有公式Sn=a1(1-qn)/(1-q) (q!=1)。本题要求的等比数列,实际上是有n+1项,且a1=1

    另外,求xy的函数是pow(x,y),他需要”#include<cmath>”。

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

    参考代码:

    #include <vector>
    #include <iostream>
    #include <fstream>
    #include <cmath>
    using namespace std;
    struct Sum{int n;double q;};
    int main(int argc,char * argv[])
    {
        vector<Sum> pair(50);
        int num=0;
        while(num<=49)
        {
            cin>>pair[num].n>>pair[num].q;
            if(pair[num].n>=1&&pair[num].n<=20&&pair[num].n>0&&pair[num].q<2)
            {
                num++;
            }
            else if(pair[num].n<1||pair[num].n>20||pair[num].q<=0||pair[num].q>=2)
            {
                cout<<"The input is out of range";
            }
            if(cin.get()=='
    ')
            {
                break;
            }
        }
        cout.precision(3);
        double sum;
        for(int i=0;i<num;i++)
        {
            if(pair[i].q==1)sum=1+pair[i].n;
            else
                sum=(1-pow(pair[i].q,pair[i].n+1))/(1-pair[i].q);
            cout<<fixed<<sum<<endl;
        }
        system("pause");
        return 0;
    }
    

    效果如图:

  • 相关阅读:
    jmeterxpath的用法
    Jmeter中Websocket协议支持包的使用
    http 错误代码汇总
    Jmeter正则表达和xpath
    SSH Secure Shell Client安装和使用
    SecureCRT安装步骤
    DataRow转化成对象
    vb.net 与 c# 的switch ... case ...的一个重要区别
    DataRow 转换成Entity实例
    Sqlserver查找数据库中含有某字段的所有表
  • 原文地址:https://www.cnblogs.com/cysolo/p/3380586.html
Copyright © 2011-2022 走看看