信息学奥赛一本通 1070:人口增长 | OpenJudge NOI 1.5 14:人口增长问题
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1070:人口增长 | OpenJudge NOI 1.5 14:人口增长问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1070:人口增長
OpenJudge NOI 1.5 14:人口增長問題
【題目考點】
1. 循環求冪
- 設變量r初始值為1:int r = 1;
- 循環n次每次循環中輸入變量a,將r的值設為r*a:r *= a;
- 循環結束后,r即為ana^nan
2. 調用乘方函數pow()(存在于<cmath>中)
double pow(double a, double b); 求aba^bab
3.(擴展)快速冪
【解題思路】
已知:每年以0.1%(即0.001)的增長速度增長。最初有x億人
1年后人口:x+x?0.001=x(1+0.001)x + x * 0.001 = x(1 + 0.001)x+x?0.001=x(1+0.001)
2年后人口:x(1+0.001)+x(1+0.001)?0.001=x(1+0.001)2x(1 + 0.001) + x(1 + 0.001) * 0.001 = x(1 + 0.001)^2x(1+0.001)+x(1+0.001)?0.001=x(1+0.001)2
3年后人口:x(1+0.001)2+x(1+0.001)2?0.001=x(1+0.001)3x(1 + 0.001)^2 + x(1 + 0.001)^2 * 0.001 = x(1 + 0.001)^3x(1+0.001)2+x(1+0.001)2?0.001=x(1+0.001)3
…
n年后人口:x(1+0.001)nx(1+0.001)^nx(1+0.001)n
而后解決:求一個數n次冪的問題
【題解代碼】
解法1:循環求冪
#include<bits/stdc++.h> using namespace std; int main() {int n;double x;cin>>x>>n;for(int i = 0; i < n; ++i){x *= 1 + 0.001;}cout<<fixed<<setprecision(4)<<x;return 0; }解法2:使用pow()函數
#include<bits/stdc++.h> using namespace std; int main() {double x, n;cin>>x>>n;cout<<fixed<<setprecision(4)<<x * pow(1 + 0.001, n);return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1070:人口增长 | OpenJudge NOI 1.5 14:人口增长问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通 2019:【例4.4】
- 下一篇: 信息学奥赛一本通 1068:与指定数字相