使用C++编写程序
题目描述
输入n和a,求a+aa+aaa+…aa…a(n个a),如当n=3,a=2时,2+22+222的结果为246
输入
包含两个整数,n和a,含义如上述,你可以假定n和a都是小于10的非负整数
输出
输出前n项和,单独占一行
样例输入 Copy
3 2
样例输出 Copy
246
解题方法
方法一:
unsigned Accumulator = 0; //累加器
for (int i = 1; i <= n; i++)
Accumulator += ((pow(10, i) - 1) / 9)*a;
方法二:
unsigned Accumulator = 0; //累加器
unsigned AuxiSpace = a; //存第n项的值,默认时存的为第一项a的值
for (int i = 1; i <= n; i++)
{
Accumulator += AuxiSpace;
AuxiSpace += pow(10, i)*a; //第i+1项的值
}
程序代码如下
#include<iostream>
#include<cmath> //pow()的头文件
using namespace std;
class SequenceSum_4
{
public:
SequenceSum_4(unsigned n, unsigned a) :ItemNumber(n), Base(a) {};
void GetSequenceSum();
private:
unsigned ItemNumber, Base;
unsigned Accumulator = 0; //累加器
};
inline void SequenceSum_4::GetSequenceSum()
{
/*
unsigned AuxiSpace = Base; //存第n项的值,默认时存的为a的值
for (int i = 1; i <= ItemNumber; i++)
{
Accumulator += AuxiSpace;
AuxiSpace += pow(10, i)*Base;
}
*/
for (int i = 1; i <= ItemNumber; i++)
Accumulator += ((pow(10, i) - 1) / 9)*Base;
cout << Accumulator;
}
int main()
{
unsigned n, a;
cin >> n >> a;
SequenceSum_4 SequenceSumObject_4(n, a);
SequenceSumObject_4.GetSequenceSum();
return 0;
}