Volume0: 0007
以下の操作を 回繰り返せば良いです。
- 借金に利子を加える
- 1000未満を切り上げ
C++
借金の計算は以下の通りです。
- 借金に金利を加える
- 1000未満を切り上げするために、999を加える
- 1000で割って千の位未満の桁を飛ばす
- 1000を掛けて千の位未満の桁を0にする
#include <iostream> using namespace std; int n; int debt = 100000; const int DIGITS = 1000; const float INTEREST_RATE = 1.05; int main() { cin >> n; for (int i = 0; i < n; ++i) { // 借金に利子を加え、1000円未満を切り上げ debt = ((int)((debt * INTEREST_RATE + DIGITS - 1) / DIGITS)) * DIGITS; } cout << debt << endl; return 0; }
Python
math.ceil(x)
関数は、x
以上の最小の整数を返します。
借金を百の位で切り捨てるためには、百の位が小数点第一位となるように調整し、math.ceil()
を使用すれば良いです。
# coding: utf-8 from math import ceil DEBT = 100000 DIGITS = 1000 INTEREST_RATE = 1.05 def calc_debt(n): "n週間後の借金を計算する" # 借金の百の位が小数点第一位となるよう調整 d = DEBT // DIGITS # 毎週利子を加える while n > 0: d = ceil(d * INTEREST_RATE) # 借金の小数点以下を切り捨て n -= 1 # 調整した借金を元に戻して返却する return d * DIGITS n = int(input()) print(calc_debt(n))