2014년 8월 5일 화요일

알고 스팟 LOAN

[-] Collapse
#include<cstdio>
using namespace std;
double balance(double amount, int duration, double rates, double monthlyPayment){
 double balance = amount;
 for (int i = 0; i < duration; ++i){
  balance *= (1.0 + (rates / 12.0) / 100.0);
  balance -= monthlyPayment;
 }
 return balance;
}
double payment(double amount, int duration, double rates){
 double lo = 0, hi = amount * (1.0 + (rates / 12.0) / 100.0);
 for (int iter = 0; iter < 100; ++iter) {
  double mid = (lo + hi) / 2.0;
  if (balance(amount, duration, rates, mid) <= 0)
   hi = mid;
  else
   lo = mid;
 }
 return hi;
}
int main(){
 int t; scanf("%d", &t);
 while (t--){
  double n, m, p; scanf("%lf%lf%lf", &n, &m, &p);
  printf("%.10lf\n", payment(n, m, p));
 }
}

댓글 없음:

댓글 쓰기