使用C++编写程序
题目描述
数列的定义如下:
数列的第一项为item,以后各项为前一项的平方根,求数列的前n项的和。
输入
由两个整数item(item<10000)和n(n<1000)组成,item和n的含义如前所述。
输出
输出该数列的和,占一行,要求精度保留2位小数。
样例输入 Copy
84 4
样例输出 Copy
97.93
解题方法
float Accumulator = 0; //累加器
for (int i = 1; i <= n; i++)
{
Accumulator += item;
item = sqrtf(item);
}
程序代码如下
#include<iostream>
#include<cmath> //sqrt()(或sqrtf())的头文件
#include<iomanip> //fixed和setprecision()的头文件
using namespace std;
class SumOfSquareRootsClass
{
public:
SumOfSquareRootsClass(int item, int N) :FirstItem(item), ItemNumber(N) {};
void GetSumOfSquareRoots();
private:
float FirstItem;
int ItemNumber;
float Accumulator = 0; //累加器
};
inline void SumOfSquareRootsClass::GetSumOfSquareRoots()
{
/*
float AuxiSpace = FirstItem; //设置一个辅助空间,用于存放第N项的值,默认是存FirstItem(即第一项),为了保护FirstItem的值
for (int i = 1; i <= ItemNumber; i++)
{
Accumulator += AuxiSpace; //求和
AuxiSpace = sqrtf(AuxiSpace); //AuxiSpace存入第i+1项的值
}
*/
for (int i = 1; i <= ItemNumber; i++)
{
Accumulator += FirstItem;
FirstItem = sqrtf(FirstItem);
}
cout << fixed << setprecision(2) << Accumulator; //保留两位小数
}
int main()
{
int item, n;
cin >> item >> n;
SumOfSquareRootsClass SumOfSquareRootsObject(item, n);
SumOfSquareRootsObject.GetSumOfSquareRoots();
return 0;
}