zoukankan      html  css  js  c++  java
  • 洛谷 P1163 银行贷款

    题目描述

    当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。

    输入格式

    三个用空格隔开的正整数。

    第一个整数表示贷款的原值,第二个整数表示每月支付的分期付款金额,第三个整数表示分期付款还清贷款所需的总月数。

    输出格式

    一个实数,表示该贷款的月利率(用百分数表示),四舍五入精确到 0.1%。

    输入输出样例

    输入 #1

    1000 100 12
    

      

    输出 #1

    2.9

     

    分析

    利率越高,还款时间越长,满足单调性,直接二分利率,如果时间短了说明利率低了,增加利率。反之亦然。check的时候记得判断越还越多的情况。黑心资本家

    代码

    //还款时间越长利率越高 满足单调性
    
    #include<bits/stdc++.h>
    using namespace std;
    
    double pri,in;
    int m;
    
    bool check(double k)
    {
        double np=pri;
        double nin=in;
        int ans=0;//记录还款时间
        double np_last=1e111;//记录上个月,排除越还越多的情况 
        while(np>0)
        {
            np=np*(1+k)-in;
            ans++;
            if(np>=np_last) return false;
            np_last=np;
        }
        if(ans<=m) return true;
        else return false;
    }
    
    
    int main()
    {
        cin>>pri>>in>>m;
        double l=0,r=100;
        while(r-l>1e-10)
        {
            double mid=(r+l)/2;
            if(check(mid)) l=mid;//钱少了,利率小了
            else r=mid; 
        }
        l=l*100;
        printf("%.1lf",l);
        return 0;
    }
    
     

      

  • 相关阅读:
    select入门学习
    tomcat入门及相关学习
    Tomcat&Servlet
    CPU排行榜
    CPU后字母代表的含义
    刷 BIOS
    Java的三个体系
    XML入门及案例
    BootStrap笔记
    第三节 DOM及案例 表格全选、表单验证
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/15566049.html
Copyright © 2011-2022 走看看