OpenJudge NOI 1.5 15:銀行利息
4369 ワード
【タイトルリンク】
OpenJudge NOI 1.5 15:銀行利息
【問題点】
1.循環べき乗変数r初期値を1とする: ループn回毎に変数aを入力し、rの値をr*aとする: サイクル終了後、rはa n a^n an 2.乗方関数pow()を呼び出す(中に存在する)
【問題解きの考え方】
既知:年利率r r rに合致し、すなわち、毎年利息が元金であるr r%r(すなわち、r/100 r/100 r/100 r/100、元金m m、投資時間y y y年1年後元利および:m+m+m(1+r/100)*(r/100)=m(1+r/100)^2 m(1+r/100)+m(1+r/100)+m(1+r/100)=m(1+r/100)=m(1+r/100)2 3年後の元利和:m(1+r/100)2+m(1+r/100)2∗(r/100)=m(1+r/100)=m(1+r/100)3 m(1+r/100)^2+m(1+r/100)^2+m(1+r/100)^2*(1+r/100)=m(1+r/100)^3 m(1+r/100)2+m(1+r/100)+m(1+r/100)+m(1+r/100)+m(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:累乗を繰り返す
解法2:pow()関数の使用
OpenJudge NOI 1.5 15:銀行利息
【問題点】
1.循環べき乗
int r = 1;
r *= a;
double pow(double a, double b);
a b^b abを求める【問題解きの考え方】
既知:年利率r r rに合致し、すなわち、毎年利息が元金であるr r%r(すなわち、r/100 r/100 r/100 r/100、元金m m、投資時間y y y年1年後元利および:m+m+m(1+r/100)*(r/100)=m(1+r/100)^2 m(1+r/100)+m(1+r/100)+m(1+r/100)=m(1+r/100)=m(1+r/100)2 3年後の元利和:m(1+r/100)2+m(1+r/100)2∗(r/100)=m(1+r/100)=m(1+r/100)3 m(1+r/100)^2+m(1+r/100)^2+m(1+r/100)^2*(1+r/100)=m(1+r/100)^3 m(1+r/100)2+m(1+r/100)+m(1+r/100)+m(1+r/100)+m(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
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
using namespace std;
int main()
{
double r, m, y;
cin>>r>>m>>y;
cout<<int(m * pow(1 + r / 100, y));// ,
return 0;
}