欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

银行贷款(洛谷P1163题题解,Java语言描述)

发布时间:2025/3/15 java 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 银行贷款(洛谷P1163题题解,Java语言描述) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目要求

P1163题目链接

分析

不断地用二分法去缩小区间,要么浮点正好被确定,要么精确到0.0001还高,最终得到答案。

注意怎么算的这笔账:
月利率设为xxx,当前金额为mim_imi,上个月金额为mi−1m_{i-1}mi1,每月还款yyy
mi=(1+x)mi−1−ym_{i}=(1+x)m_{i-1}-ymi=(1+x)mi1y
经过循环,要把这笔钱还上,即最终mim_{i}mi要为0,我们解这个题只需要把误差降到可控就好。

惨无人道的是这题高利贷,好像有个数据是月利率2.0+……所以不可以常理度之……

AC代码(Java语言描述)

import java.util.Scanner;public class Main {private static double a, b;private static int c;private static void getResult(double left, double right) {double mid = (left+right)/2, temp = a;if(right-left < 0.0001) {System.out.printf("%.1f", mid*100);return;}for(int i = 0; i < c; i++) {temp = temp*(1+mid)-b;}if(temp > 0) {getResult(left, mid);} else if(temp < 0) {getResult(mid, right);} else {System.out.printf("%.1f", mid*100);}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);a = scanner.nextDouble();b = scanner.nextDouble();c = scanner.nextInt();scanner.close();getResult(0, 5);}}

总结

以上是生活随笔为你收集整理的银行贷款(洛谷P1163题题解,Java语言描述)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。