-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUVa-10114.cpp
More file actions
68 lines (41 loc) · 1.67 KB
/
UVa-10114.cpp
File metadata and controls
68 lines (41 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int months;
double downPayment, loan;
int records;
while (true) {
cin >> months >> downPayment >> loan >> records;
vector<pair<int, double>> depreciation(records);
if (months < 0)
break;
for (int i = 0; i < records; i++) {
int month;
double percent;
cin >> month >> percent;
depreciation[i]=make_pair(month, percent);
}
int idx = 0; // index of the depreciation for the current month.
double priceNow = loan + downPayment; // the original loan amount, to be reduced by a factor of depreciation factor for each month.
double owed = loan; // current amount left to be paid (the loan)
double monthlyPayment = loan/months;
priceNow = priceNow - (priceNow * depreciation[idx].second); // the car value goes down each month be a factor of depreciation.
int currentMonth = 0; // current month number, starting from 0
while (priceNow < owed) {
currentMonth++;
if (idx+1 < records && depreciation[idx+1].first == currentMonth) {
idx = idx + 1;
}
priceNow = priceNow - (priceNow * depreciation[idx].second); // the car value goes down each month be a factor of depreciation.
owed -= monthlyPayment; // subtract the monthly downPayment from the amount owed to the bank.
}
cout << currentMonth << " month";
if (currentMonth != 1) {
cout << "s";
}
cout << endl;
}
return 0;
}