【题目链接】
【题目考点】
1. 循环求幂
- 设变量r初始值为1:
int r = 1;
- 循环n次每次循环中输入变量a,将r的值设为r*a:
r *= a;
- 循环结束后,r即为 a n a^n an
2. 调用乘方函数pow()(存在于<cmath>中)
double pow(double a, double b);
求
a
b
a^b
ab
【解题思路】
已知:符合年利率为
r
r
r,即每年利息为本金的
r
r%
r(即
r
/
100
r/100
r/100,本金
m
m
m,投资时间
y
y
y年
1年后本息和:
m
+
m
∗
r
/
100
=
m
(
1
+
r
/
100
)
m + m * r / 100 = m(1 + r / 100)
m+m∗r/100=m(1+r/100)
2年后本息和:
m
(
1
+
r
/
100
)
+
m
(
1
+
r
/
100
)
∗
(
r
/
100
)
=
m
(
1
+
r
/
100
)
2
m(1 + r / 100) + m(1 + r / 100) * (r / 100) = m(1 + r / 100)^2
m(1+r/100)+m(1+r/100)∗(r/100)=m(1+r/100)2
3年后本息和:
m
(
1
+
r
/
100
)
2
+
m
(
1
+
r
/
100
)
2
∗
(
r
/
100
)
=
m
(
1
+
r
/
100
)
3
m(1 + r / 100)^2 + m(1 + r / 100)^2 * (r / 100) = m(1 + r / 100)^3
m(1+r/100)2+m(1+r/100)2∗(r/100)=m(1+r/100)3
…
n年后本息和:
m
(
1
+
r
/
100
)
n
m(1 + r / 100)^n
m(1+r/100)n
而后解决:求一个数n次幂的问题
【题解代码】
解法1:循环求幂
#include<bits/stdc++.h>
using namespace std;
int main()
{
double r, m, y;
cin>>r>>m>>y;
for(int i = 0; i < y; ++i)
m *= 1 + r / 100;
cout<<int(m);//最后只需要输出整数部分,将浮点型数据强转为整型即可
return 0;
}
解法2:使用pow()函数
#include<bits/stdc++.h>
using namespace std;
int main()
{
double r, m, y;
cin>>r>>m>>y;
cout<<int(m * pow(1 + r / 100, y));//最后只需要输出整数部分,将浮点型数据强转为整型即可
return 0;
}