首页 > 其他分享 >洛谷题单指南-二分查找与二分答案-P1163 银行贷款

洛谷题单指南-二分查找与二分答案-P1163 银行贷款

时间:2024-03-03 20:57:22浏览次数:51  
标签:二分 洛谷题 mid 剩下 P1163 double 贷款 利率

原题链接:https://www.luogu.com.cn/problem/P1163

题意解读:利率越小,贷款期限和每个月还的钱固定的情况下,越有可能能够还完全部的贷款,具备单调性,因此给定贷款利率、贷款月数、每月还款钱数,可以计算最终贷款还剩下多少,有两种情况:>=0,说明利率可能大了,要试探更小利率;<0,说明利率小了,要试探更大利率,对利率二分即可。

解题思路:

给定利率,如何计算终点贷款还剩下多少呢?

设已知全部贷款为W,每个月还w,一共还m个月,利率为x

第一月还剩:W * (1 + x) - w   ( 说明:第一个产生的利息为W * x,还钱为w,所以剩下W + W * x - w = W * (1 + x)- w )

第二个月还剩:(W * (1 + x) - w)* (1 + x) - w (说明,即第一月剩下的贷款 * (1 + x) - w)

后面几个月的以此类推,每个月剩下的贷款都等于上个月剩下的贷款 * (1 + x) - w

得到最后一个月剩下的贷款,如果>=0,对利率x进行更小范围的试探,如果<0,对利率x进行更大范围的试探。

100分代码:

#include <bits/stdc++.h>
using namespace std;

double W, w, m;
double ans;

//x是月利率
bool check(double x)
{
    double all = W;
    for(int i = 1; i <= m; i++)
    {
        all = all * (1 + x) - w; //计算每个月还款后还剩多少贷款
    }
    return all >= 0; //如果最终剩余的贷款>=0,说明利息可能多了,还不完贷款,利率可以更小
}

int main()
{
    cin >> W >> w >> m;

    double l = 0, r = 10;
    while(r - l > 1e-5) //结果有3位有效小数,所以用更多2个小数的1e-5来判段r、l接近相等
    {
        double mid = (l + r) / 2;
        if(check(mid)) ans = mid, r = mid;
        else l = mid;
    }
    cout << fixed << setprecision(1) << ans * 100;

    return 0;
}

 

标签:二分,洛谷题,mid,剩下,P1163,double,贷款,利率
From: https://www.cnblogs.com/jcwy/p/18050696

相关文章

  • 【基础算法】二分查找
    二分查找什么是二分?将问题分成两个部分。猜数游戏计算机给你一个范围内的随机数,你要输入一个数,计算机给你反馈是太大了还是太小了,直到你输出正确的答案。怎么设计这个程序呢?#include<iostream>#include<ctime>usingnamespacestd;intmain(){srand(time(NULL));......
  • 【基础算法】二分答案
    二分答案什么是二分答案?将答案区间进行二分,不断缩小答案区间,直到区间缩小到符合题意的答案。我们又该怎么书写呢?常用的二分模版://不断缩小答案区间while(l<=r){intmid=l+r>>1;if(check(mid))r=mid-1;elsel=mid+1;}模版的含义\(......
  • Educational Codeforces Round 143 (Rated for Div. 2)C. Tea Tasting(前缀和+二分、
    C.TeaTasting思路这里枚举有三种思路然后经过考虑3是最可行的,然后接着考虑如何计算贡献这里在实现的时候用了一个差分数组,因为我们需要记录第i个茶师它喝了多少个\(b_i\)以及不满\(b_i\)的用\(c_i\)记录,最后计算一下答案即可。#include<bits/stdc++.h>#defineintlon......
  • 洛谷题单指南-二分查找与二分答案-P1182 数列分段 Section II
    原题链接:https://www.luogu.com.cn/problem/P1182题意解读:每段和的最大值越小,则分段数就越多,因此可以通过给定每段和的最大值,将分段数划分为两类:<=M,>M,对每段和的最大值进行二分即可。解题思路:二分的判定条件为,给定每段和的最大值,计算分段数,计算逻辑如下:依次遍历每一个数,求当前......
  • st表二分按位与_cf900_E. Iva & Pav
    目录题目概述思路想法参考代码做题反思题目概述原题参考:E.Iva&Pav给出长度为n的数组和m次询问,每次询问包括一个左区间l和一个整数k,要求给出最大的右区间的值使得al&al+1&...&ar>=k思路想法其实对二进制的几种运算随意看一下,可以发现:随着长度的增加,按位与的结果是保......
  • 2024AcWing蓝桥杯集训·每日一题-二分
    1.[AcWing503.借教室]题目描述在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来\(n\)天......
  • 二分查找
       int范围有限,当数据量大的时候容易导致结出现负数>>>右移运算符相当于把二进制除与二后取整防止数据过大出现负数适用于更多的编程语言  符合逻辑,方便阅读 改进的地方:右指针不指向需要查找的数,只需确认左指针指向的数是不是要查找的数 ......
  • 洛谷题单指南-二分查找与二分答案-P3853 [TJOI2007] 路标设置
    原题链接:https://www.luogu.com.cn/problem/P3853题意解读:相邻路标的最大距离即空旷指数,空旷指数越小,用的路标越多,因此可以根据空旷指数将使用路标情况分成两类:路标数<=K,路标数>K,对空旷指数进行二分即可。解题思路:二分的判定条件为,给定空旷指数,计算需要的路标数只需遍历每两......
  • 洛谷题单指南-二分查找与二分答案-P2678 [NOIP2015 提高组] 跳石头
    原题链接:https://www.luogu.com.cn/problem/P2678题意解读:最短跳跃距离越大,要移走的石头就越多,因此可以根据最短跳跃距离的不同把情况分为两类:移走的石头数<=M、移走的石头数>M,对最短跳跃距离二分即可。解题思路:二分的判定条件如下:对于给定最短跳跃距离,需要计算移走的石头数,......
  • 【STL】二分搜索的实现与stl标准库的应用
    在算法题中经常会出现搜索的题目,如果使用暴力搜索在数据量较大时会超时,(如\(10^5\)数量级时\(O(n^2)\)就会超时,\(O(nlogn)\)则通常不会),因此常用二分搜索等进行优化。虽然stl库中关于二分搜索的接口很好用,很适合区间二分搜索,但我们仍需掌握C++实现二分搜索,“虽然这是一个简单的算法......