蓝桥杯之还款计算

第八届蓝桥杯模拟赛 还款计算 标题: 还款计算 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。 比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到“分”。 经计算,此种情... 阅读详情

标题: 还款计算

    银行贷款的等额本息还款方法是:
    每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。

    比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。
    则银行会在每个月进行结算:
    结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12)
    则本月本金结余为:本金 + 利息 - 每月固定还款额
    计算结果会四舍五入到“分”。

    经计算,此种情况下,固定还款额应为:438.71

    这样,第一月结算时的本金余额是:
    9602.96
    第二个月结算:
    9204.26
    第三个月结算:
    8803.9
    ....
    最后一个月如果仍按固定额还款,则最后仍有0.11元的本金余额,
    但如果调整固定还款额为438.72, 则最后一个月会多还了银行0.14元。
    银行会选择最后本金结算绝对值最小的情况来设定 每月的固定还款额度。
    如果有两种情况最后本金绝对值相同,则选择还款较少的那个方案。

    本题的任务是已知年化利率,还款期数,求每月的固定还款额度。

    假设小明贷款为1万元,即:初始本金=1万元。
    年化利率的单位是百分之多少。
    期数的单位为多少个月。

    输入为2行,
    第一行为一个小数r,表示年率是百分之几。(0<r<30)
    第二行为一个整数n,表示还款期限。 (6<=n<=120)

    要求输出为一个整数,表示每月还款额(单位是:分)

    例如:
    输入:
    4.01
    24

    程序应该输出:
    43429

    再比如:
    输入:
    6.85
    36

    程序应该输出:
    30809

    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗  < 1000ms


    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    java选手注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
    java选手注意:主类的名字必须是:Main,否则按无效代码处理。
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;

public class Main {
        private static int n;
        private static double r;
        static int a = 0;
        static double a2 = 0;

        public static double f(double N, int k, int x){
            if(N > 0 && k == n){
                return N;
            }else if(N < 0 && k == n){
                if(a == 0){
                    a = x;
                    a2 = Math.abs(N);
                }
                return N;
            }

            N = N + N * r - x;
            BigDecimal dd = BigDecimal.valueOf(N);
            f(dd.setScale(0, RoundingMode.HALF_UP).doubleValue(), k + 1, x);
            return 0;
        }


        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            r = sc.nextDouble();    //表示的是年利率
            n = sc.nextInt();   //表示要还款多少个月
            sc.close();
//          r = r / n;
            r = r / 100;
            //初步锁定一个大概范围, 这个范围可以缩小试探的次数
            int max = (int)((n / 12 * r * 1000000 + 1000000) / n);
            int min = (int)((r * 1000000 + 1000000) / n);
            r = r / 12;     //月利率
            //System.out.println("区间【" + max + ", " + min + " 】");
            for(int i = min; i < max; i++){
                f(1000000, 0, i);
            }
            double abs = 1000000;
            for(int i = n; i >= 1; i--){
                abs = abs + abs * r - (a - 1);
                BigDecimal dd = BigDecimal.valueOf(abs);
                abs = dd.setScale(0, RoundingMode.HALF_UP).doubleValue();
            }
            //System.out.println(abs + ", " + a2);
            if(a2 - abs >= 0){
                System.out.println(a - 1);
            }else{
                System.out.println(a);
            }

        }

}
【蓝桥杯真题】本金利息 欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。欢迎加入团队圈子!与作者面对面!直接点击!问题描述本题注... 阅读详情

相关推荐

蓝桥杯2014省赛——等额本金(Java)

描述:小明从银行贷款3万元。约定分24个月,以等额本金方式还款。 这种还款方式就是把贷款额度等分到24个月。每个月除了要还固定的本金外,还要还贷款余额在一个月中产生的利息。 假设月利率是:0.005,即:千分之五。那么, 第一个月,小明要还本金 1250, 还要还利息:30000 * 0.005,总计 1400 第二个月,本金仍然要还 1250, 但利息为:(30000-1250) * 0.005 总计 1393.75 请问:小明在第15个月,应该还款多少(本金和利息的总和)? 请把答案金额四舍五入后,保留

KJ.JK 508

蓝桥杯——还款计算

标题: 还款计算银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到“分”。经计算,此种情况下,固定还...

qq_40339331的博客 462

贷款还款计算程序

使用JAVA写的计算贷款还款每月明细的小程序

蓝桥杯模拟 还款计算

标题: 还款计算银行贷款的等额本息还款方法是:每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。则银行会在每个月进行结算:结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12)则本月本金结余为:本金 + 利息 - 每月固定还款额计算结果会四舍五入到“分”。经计算,此种情况下,固定还款额应为:...

qq_34525938的博客 365

射频工程师必须了解的S参数四项要点

本文围绕单端 6 英寸走线的 S 参数展开深入分析,核心包含四项关键要点:低频下导线电学长度远小于信号波长,S11 呈大负分贝值、S21 接近 0 分贝;端口与走线的阻抗不匹配引发反射叠加,形成 S11 首个峰值(对应传输线四分之一波长频率);S21 相位可作为一致性检查依据,其 90° 相位差与 S11 峰值吻合;理想建模中 S11 峰值随频率上升因损耗下降,实际测量因连接器等阻抗不连续性,S11 会出现振荡上升。分析依托 Keysight ADS 工具与电磁求解器原理,为 S 参数解读提供科学支撑。

一只豌豆象的博客 1284

Inside NAND Flash Memories.中文版. Chatper 2 [2.1-2.2.1]

2.1 Introduction 半导体存储器分类: RAM:Random Access Memories--掉电丢失 ROM:Read Only Memories--只读,出厂时写好;掉电不丢失;不可更改。 NVM:Non-Volatile Memories--电可擦除/写入,并且掉电不丢失。第一类产品为EPROM memory (Erasable Programmable Read...

xuqikang的专栏 3606

Java语言程序设计——计算贷款的月支付金领和总偿还金额

Java语言程序设计 沈泽钢主编 第二章课后习题

m0_74073344的博客 1008

避坑指南:STM32移植CanFestival时那些没人告诉你的细节(含TJA1050硬件适配)

本文深入解析STM32移植CanFestival协议栈时的关键细节与TJA1050硬件适配技巧,涵盖AVR残留代码清理、定时器中断优化及CAN通信稳定性提升方案。特别针对TJA1050在特定波特率下的信号畸变问题提供实战解决方案,帮助开发者规避移植过程中的隐形陷阱,实现工业级稳定通信。

work3的博客 760

python学习笔记七(函数)

函数 1.结构化编程 将特殊的逻辑,功能性代码,单独的抽取出来,封装成函数进行调用 min([1,2,3]) ---逻辑被封装到了函数当中,调用起来非常方便简洁 2.非结构化编程 所有的代码和逻辑都在同一个代码块中 图书管理系统 逻辑比较混乱,代码量太多,太杂 函数是程序的重要组成部分 一个程序中可以有多个函数组成,多个函数...

nhpper的博客 496

从零开始之stm32之CAN通信

CAN通信极简教程(小白友好版),从小白的视角了解并实现简单的STM32F103的CAN通信,直接上手。

qq_30993593的博客 1306

手把手教你绕过网易易盾验证码:滑块、点选、语序全攻略

本文深度解析了以网易易盾为代表的现代验证码技术,重点探讨了滑块、点选、语序及空间推理等交互式验证码的工作原理与对抗策略。文章从行为验证和空间推理的核心逻辑出发,剖析了验证码交互的数据流与关键参数,并提供了模拟人类行为轨迹、维护设备指纹等工程实践方法,旨在帮助开发者在合规前提下设计更健壮的自动化流程。

3c4x5z6v7b的博客 690

蓝桥杯2017模拟赛-还款计算

标题: 还款计算银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到“分”。经计算,此种情况下

a568283992的博客 2970

Grafana企业版vs开源版:从安装到插件管理的完整对比实测(含离线部署技巧)

本文深入对比Grafana企业版与开源版在安装流程、插件管理和功能限制等方面的差异,特别针对离线部署场景提供实用技巧。通过实测数据源支持、权限管理等核心功能,帮助企业用户做出明智选择,同时详细介绍离线安装和插件签名验证等关键操作。

weixin_29313817的博客 102

蓝桥杯模拟题-还款计算

标题: 还款计算银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到“分”。经计算,此种情况下,固定还款

小明的博客 3085

服务器取证——服务器基础知识

服务器基础知识

记录并分享学习安全的知识点.. 2480

UWB:FiRa Consortium UCI Generic Technical Specification v1.1.0(1)- UCI架构和通用数据包头

如果大家学习过WiFi的SPEC,比如从我的资源里面下载 IEEE 802.11-2007,应该很容易发现,FiRa的spec定义实在是太差了。有现成的好例子不学,非得自己来一套,搞一堆新的名词,其实都是一个意思。比如GID,OID等,而且GID、OID是最先出现的,但是对应表格 还得去附件的最后一项去找。 FiRa是UWB联盟,希望跟WIFi联盟学习一下,把UWB做大做强,而不是自成一派,自命不凡。

Ankie资深技术项目经理 2434

蓝桥杯 还款计算

标题: 还款计算 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。 比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到

K键盘里的青春K 1048

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

还款计算 蓝桥杯

银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。 比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到“分”。 经计算,

Become hunger become strong 794

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

2017蓝桥杯模拟试题 还款计算

标题: 还款计算 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。 比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到

Fore_Zach的博客 1117

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝桥杯模拟赛2017 还款计算

标题: 还款计算 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。 比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入

秦楚 638

蓝桥杯模拟赛-还款计算

标题: 还款计算 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。 比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到“分”。

obession的博客 710

蓝桥杯2017官方模拟赛 还款计算(思路)

题目: 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。 比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四

riba2534的博客 1136

蓝桥杯模拟题还款计算

这题一开始觉得并不复杂,想着double可以自动四舍五入不用太操心,结果经过这一题我才知道原来浮点数的四舍五入不稳定 #include #include using namespace std; double sw(double x) { int y=(x+0.005)*100; return y/100.0; } int main() { double r; i

sinat_37478202的博客 420

2017蓝桥杯模拟赛 Problem E: 还款计算(13分)

Problem E: 还款计算(13分) Description 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。 比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:

nhpper的博客 412

蓝桥杯专题-试题版含答案-【猜算式】【排列序数】【还款计算】【滑动解锁】

有什么需要欢迎文章底部卡片私我,获取更多支持,交流让学习不再孤单

空名先生 770

(蓝桥杯模拟)1.算年龄 & 4.字符串比较(填空) & 5.还款计算

标题:算年龄 英国数学家德摩根出生于19世纪初叶(即18xx年)。 他年少时便很有才华。一次有人问他的年龄,他回答说: “到了x的平方那年,我刚好是x岁”。 请你计算一下,德摩根到底出生在哪一年。 题中的年龄指的是周岁。 思路:这个题有一个很坑的点是出生年份用18xx表示了,后面又有了x的平方年、x岁,很容易让人认为x是相同的,实际上18xx只是为了表示19世纪初叶

一七得七 449
上一篇: 高精度加法运算
下一篇: 数据结构之自定义双链表
LuFei_java
博客等级 码龄10年 1粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值