개인공부용123 프로그래밍 블로그
AlgoSpot) LOAN 본문
문제 : https://algospot.com/judge/problem/read/LOAN
갚을 금액 N, 연이율 P, M개월동안 C원을 갚는다했을경우 한달에 최소 얼마를 갚아야하는지 구하는 문제입니다.
이문제는 이분법으로 접근해서 풀었습니다. (식으로도 풀수있습니다.)
*이분법으로 접근했을경우 setprecision(10)을 사용하지 않을경우 오차가 10^-7을 넘기때문에 오답처리가됩니다.
#include#include using namespace std; double N, P; // 갚을 금액, 이자율 int M; //몇달동안 bool if_possible(double Monthly_payment) { double Money = N; const double interest = P / 1200.0; for (int i = 1; i <= M; ++i) { Money *= (1.0 + interest); Money -= Monthly_payment; } return (Money <= 0.0); } void BinaryMethod() { double lo = 0, hi = N * (1.0 + (P / 1200.0)); for (int i = 0; i < 100; ++i) { double mid = (lo + hi) / 2.0; if (if_possible(mid)) hi = mid; else lo = mid; } cout << fixed << setprecision(10); cout << hi << endl; } int main() { ios::sync_with_stdio(false); int C; cin >> C; while (C--) { cin >> N >> M >> P; BinaryMethod(); } return 0; }
'알고리즘문제' 카테고리의 다른 글
AlgoSpot) POTION (0) | 2017.02.20 |
---|---|
AlgoSpot) RATIO (0) | 2017.02.13 |
AlgoSpot) CANADATRIP (0) | 2017.02.06 |
AlgoSpot) ARCTIC (0) | 2017.02.03 |
AlgoSpot) DARPA (0) | 2017.01.31 |