1017. Rate of Return

来源:互联网 发布:jquery 3.1.1.min.js 编辑:程序博客网 时间:2024/05/16 19:19
#include <iostream>#include <cstring>#include <cmath>#include <iomanip>using namespace std;double saveAt[13];int due;double total;double cal(double rate) {    double ttl = 0;    for(int i = 1; i <= 12; i++) {        if(saveAt != 0) {            ttl += saveAt[i] * pow(1 + rate, due - i + 1);        }    }    return ttl;}void print(double result) {    cout << fixed << showpoint << setprecision(5)          << result << endl;}double binsearch(double head, double tail) {    if(fabs(cal(head) - total) < 1e-6) {        return head;    }    else if(fabs(cal(tail) - total) < 1e-6) {        return tail;    }    else{        double half = (head + tail) / 2;        if(cal(half) <= total) {            return binsearch(half, tail);        }        else {            return binsearch(head, half);        }    }}int main() {    int times, cases = 1;    while(cin >> times && times != -1) {        memset(saveAt, 0, sizeof(saveAt));        int mon;        double tosave;        for(int i = 0; i < times; i++) {            cin >> mon >> tosave;            saveAt[mon] = tosave;        }        cin >> due >> total;        if(cases != 1) {            cout << endl;        }        cout << "Case " << cases << ": ";        print(binsearch(0, 1));        cases++;    }    return 0;}                                 

0 0
原创粉丝点击