OpenJudge NOI 1.5 15:銀行利息


【タイトルリンク】
OpenJudge NOI 1.5 15:銀行利息
【問題点】
1.循環べき乗
  • 変数r初期値を1とする:int r = 1;
  • ループn回毎に変数aを入力し、rの値をr*aとする:r *= a;
  • サイクル終了後、rはa n a^n an
  • 2.乗方関数pow()を呼び出す(中に存在する)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;
    }