谭浩强C++课后练习题3——计算a+aa+…+aa…a
题目描述:求Sn=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。
算法思路:
用一个变量result存储最后的结果,让其初始值为0;number表示每一个项的值,m为辅助值每次循环乘10。每循环一次,让number更新,result加上number的值,m乘10;m的功能也可用pow函数代替(需要引入cmath)功能为计算某个值的乘阶。
循环n次后返回result。
#include<iostream>
using namespace std;
int Sn(int a, int n) {
int result = 0;
int number = 0;
int m = 1;
for (int i = 1;i <= n;i++) {
number += a * m;
result += number;
m *= 10;
}
return result;
}
int main() {
int a, n;
cout << "输入a,n:";
cin >> a >> n;
cout << "result=" << Sn(a, n) << endl;
return 0;
}
运行测试结果: