银行贷款(洛谷P1163题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
银行贷款(洛谷P1163题题解,Java语言描述)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目要求
P1163題目鏈接
分析
不斷地用二分法去縮小區(qū)間,要么浮點(diǎn)正好被確定,要么精確到0.0001還高,最終得到答案。
注意怎么算的這筆賬:
月利率設(shè)為xxx,當(dāng)前金額為mim_imi?,上個(gè)月金額為mi?1m_{i-1}mi?1?,每月還款yyy
mi=(1+x)mi?1?ym_{i}=(1+x)m_{i-1}-ymi?=(1+x)mi?1??y
經(jīng)過(guò)循環(huán),要把這筆錢(qián)還上,即最終mim_{i}mi?要為0,我們解這個(gè)題只需要把誤差降到可控就好。
慘無(wú)人道的是這題高利貸,好像有個(gè)數(shù)據(jù)是月利率2.0+……所以不可以常理度之……
AC代碼(Java語(yǔ)言描述)
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);}}總結(jié)
以上是生活随笔為你收集整理的银行贷款(洛谷P1163题题解,Java语言描述)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Java】浅析equals()和has
- 下一篇: 【数据库系统】SQL修改的注意事项