zoukankan      html  css  js  c++  java
  • Gym

    题意略。

    思路:二分。注意当利率高且m比较小的时候,每个月的偿还可能会大于本金,所以我们二分的右边界应该要设为2 * 本金。

    详见代码:

    #include<bits/stdc++.h>
    #define eps 1e-7
    using namespace std;
    
    double s,p;
    int m;
    
    int sgn(double x){
        if(fabs(x) < 0) return 0;
        if(x > 0) return 1;
        else if(x < 0) return -1;
    }
    bool jud(double x){
        double fir = x * m;
        double ai = s * p,bi = x - ai;
        double sum1 = ai,sum2 = bi;
        for(int i = 2;i <= m;++i){
            ai = (s - sum2) * p;
            bi = (x - ai);
            sum1 += ai;
            sum2 += bi;
        }
        return sgn(s - sum2) <= 0;
    }
    
    int main(){
    //    freopen("input.txt","r",stdin);
    //    freopen("output.txt","w",stdout);
        scanf("%lf%d%lf",&s,&m,&p);
        double l = 0,r = 2 * s,mid;
        p /= 100.0;
        while(fabs(r - l) > eps){
            mid = (r + l) / 2;
            if(jud(mid)) r = mid;
            else l = mid;
        }
        printf("%lf
    ",l);
        return 0;
    }
    
    /*
    100 1 50
    */
  • 相关阅读:
    CentOS随笔
    CentOS随笔
    CentOS随笔
    CentOS随笔
    产品从生到死的N宗罪
    即将结束的2015。
    Mvvm
    android 热补丁修复框架
    反编译APK
    关于短视频
  • 原文地址:https://www.cnblogs.com/tiberius/p/9316334.html
Copyright © 2011-2022 走看看