题目链接:
跟最大值最小化 (最小值最大化) 略有不同, 枚举利率满足 = 0 刚好还完即可(坑点, 浮点数有精度误差, 控制好), 但大致上一样.(其实我是先写暴力枚举再改为二分枚举的..)
注意几点
1. 经济学常识, 利率累加每月的额外支付不一样(明白那个计算公式相当于 judge 函数).
2. 找到一个满足的就可以退出, 不用再像最小值最大化再向右尝试了.
3. 控制好精度问题,<0.001 有个 wa,<0.0001 即可
4. 和那个问题不同, 可能过程中没有 break 直到最后退出, 这时特判一下 = r 或 l 即可
- #include <iostream>
- #include <iomanip>
- using namespace std;
- int main()
- {
- iOS::sync_with_stdio(false); cin.tie(0);
- double a,b,c;
- cin>>a>>b>>c;
- double i=0,ans=0;
- double l=0,r=5;
- while(l<=r)
- {
- double mid=(l+r)/2;
- //cout<<l<<''<<r<<' '<<mid<<endl;
- double x=a;
- for(int j=1;j<=c;j++)
- x=x*(1+mid)-b;
- if(x>=-0.0001 && x<=0.0001)
- {
- ans=mid;
- break;
- }
- else
- {
- if(x>0) r=mid-0.0001;
- else l=mid+0.0001;
- }
- }
- if(l>r) ans=l;
- cout<<setiosflags(iOS::fixed)<<setprecision(1)<<ans*100<<endl;
- return 0;
- }
完.
来源: http://www.bubuko.com/infodetail-2864682.html