알고 스팟 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));
}
}
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));
}
}
댓글 없음:
댓글 쓰기