Python算法100例-2.5 存钱

news2025/2/25 15:52:29

完整源代码项目地址,关注博主私信'源代码'后可获取

  • 1.问题描述
  • 2.问题分析
  • 3.算法设计
  • 4.确定程序框架
  • 5.完整的程序

1.问题描述

假设银行整存整取存款不同期限的月利率为:

·0.63%,期限为1年;

·0.66%,期限为2年;

·0.69%,期限为3年;

·0.75%,期限为5年;

·0.84%,期限为8年。

现在已知某人手上有2000元,要求通过计算选择出一种存钱方案,使得这笔钱存入银行20年后获得的利息最多。假定银行对超出存款期限的那部分时间不付利息。

2.问题分析

为了获取到最多的利息,应该在存入银行的钱到期后马上就取出来,然后再立刻将原来的本金加上当前所获取到的利息作为新的本金存入银行中,这样反复操作直到满20年为止。

又由于存款的期限不同,对应的利率是不相同的,因此在20年中,不同的存取期限的组合所获得的利息也是不相同的。

假设在这20年中,1年期限的存了 x 1 x_1 x1次,2年期限的存了 x 2 x_2 x2次,3年期限的存了 x 3 x_3 x3次,5年期限的存了 x 5 x_5 x5次,8年期限的存了 x 8 x_8 x8次,则到期时存款人所得的本利合计为:

2000 ∗ ( 1 + 0.063 ) x 1 ∗ ( 1 + 0.066 ) x 2 ∗ ( 1 + 0.069 ) x 3 ∗ ( 1 + 0.075 ) x 5 ∗ ( 1 + 0.084 ) x 8 2000*(1+0.063)x_1*(1+0.066)x_2*(1+0.069)x_3*(1+0.075)x_5*(1+0.084)x_8 2000(1+0.063)x1(1+0.066)x2(1+0.069)x3(1+0.075)x5(1+0.084)x8

由题意可知,显然8年期限的存款次数最多为两次,因此可得到下面对存款期限的限定条件:

0 ≤ x 8 ≤ 2 0≤x_8≤2 0x82

0 ≤ x 5 ≤ ( 20 − 8 ∗ x 8 ) / 5 0≤x_5≤(20-8*x_8)/5 0x5(208x8)/5

0 ≤ x 3 ≤ ( 20 − 8 ∗ x 8 − 5 ∗ x 5 ) / 3 0≤x_3≤(20-8*x_8-5*x_5)/3 0x3(208x85x5)/3

0 ≤ x 2 ≤ ( 20 − 8 ∗ x 8 − 5 ∗ x 5 − 3 ∗ x 3 ) / 2 0≤x_2≤(20-8*x_8-5*x_5-3*x_3)/2 0x2(208x85x53x3)/2

x 1 = 20 − 8 ∗ x 8 − 5 ∗ x 5 − 3 ∗ x 3 − 2 ∗ x 2 且 x 1 ≥ 0 x_1=20-8*x_8-5*x_5-3*x_3-2*x_2且x_1≥0 x1=208x85x53x32x2x10

3.算法设计

根据式①及对存款期限的限定条件,可以使用for循环来穷举出所有可能的存款金额,从中找出最大的存款金额就是该问题的解。

因为限定条件已经确定了,因此for循环的循环次数也就确定了。

4.确定程序框架

程序流程图如图所示。

在这里插入图片描述

5.完整的程序

根据上面的分析,编写程序如下:

%%time
# 存钱问题

if __name__=="__main__":
    #在20年中,1年期限的存了x1次,2年期限的存了x2次,以此类推
    max = 0.0
    for x8 in range(0,3):
        t5 = (20-8*x8)//5                                                   #存款5年的最大次数
        for x5 in range(0, t5+1):
            t3 = (20-8*x8-5*x5)//3                                  #存款3年的最大次数
            for x3 in range(0, t3+1):
                t2 = (20-8*x8-5*x5-3*x3)//2
                for x2 in range(0, t2+1):
                    x1 = 20-8*x8-5*x5-3*x3-2*x2     # 存款期限限定条件
                    # 判断条件
                    result = 2000* ((1+0.0063*12)**x1) * ((1+2*0.0066*12)**x2)* ((1+3*0.0069*12)**x3) * ((1+5*0.0075*12)**x5) * ((1+8*0.0084*12)**x8)
                    # y1、y2、y3、y5、y8用于记录获利最多的存款方式
                    if result > max:
                        max = result
                        y1 = x1
                        y2 = x2
                        y3 = x3
                        y5 = x5
                        y8 = x8
    # 输出结果
    print("获得利息最多的存款方式为:");
    print("8年期限的存了%d次" %y8);
    print("5年期限的存了%d次" %y5);
    print("3年期限的存了%d次" %y3);
    print("2年期限的存了%d次" %y2);
    print("1年期限的存了%d次" %y1);
    print("存款人最终的获得的本利合计:%0.2f" %result);


获得利息最多的存款方式为:
8年期限的存了0次
5年期限的存了4次
3年期限的存了0次
2年期限的存了0次
1年期限的存了0次
存款人最终的获得的本利合计:8763.19
CPU times: user 341 µs, sys: 113 µs, total: 454 µs
Wall time: 420 µs

程序说明:

1)“**”表示幂运算,x**y返回x的y次幂,即计算 x y x^y xy的值。例如,5**2=25。

2)使用括号“()”改变程序的优先级。Python语言中,括号“()”拥有最高优先级,可以强制表达式按照需要的顺序求值,括号中的表达式会优先执行,也可以利用括号使得表达式更加易读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1473728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java练习(第4天)【总结】反转字符串的9种不同实现方法

一、问题描述 给定一个字符串,输出反转后的字符串。 样例输入1: abc 样例输出1: cba 样例输入2: GeeksforGeeks 样例输出2: skeeGrofskeeG 二、Java实现(九个程序) 1、实现1 思想: 逐个取 倒序拼 Java代码: i…

测试开发(6)软件测试教程——自动化测试selenium(自动化测试介绍、如何实施、Selenium介绍 、Selenium相关的API)

接上次博客:测试开发(5)测试分类标准 :按测试对像划分、按是否查看代码划分、按开发阶段划分、按测试实施组织、按是否运行划分、按是否手工划分、按测试地域划分-CSDN博客 目录​​​​​​​ 什么是自动化测试 自动化测试介绍…

【Unity自制手册】Unity—Camera相机跟随的方法大全

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

微信小程序蓝牙通信HC08

总结这两天研究的蓝牙串口。人话版资料不多,主要靠翻别人的仓库和文档。 单片机部分,与蓝牙串口通信是通过串口。比我想的要简单,小程序部分,有非常多的服务和特征,而且人话版资料不多。 如果本文有什么问题&#xf…

C# 水排序 微信小游戏

来只 水排序谜题启发式搜索方法_水排序解法小程序-CSDN博客 大神的C语言转换成C# 语言,更多的请看原作者,这里直接贴C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace ConsoleApp2 {class Pro…

再见,Visual Basic——曾经风靡一时的编程语言

2020年3月,微软团队宣布了对Visual Basic(VB)的“终审判决”:不再进行开发或增加新功能。这意味着曾经风光无限的VB正式退出了历史舞台。 VB是微软推出的首款可视化编程软件,自1991年问世以来,便受到了广大…

vue插件——vue-print-nb 实现打印功能

之前写过好多关于打印的功能,通过windowprint组合键来实现打印。 今天遇到一个需求,就是使用vue插件来实现打印功能。 最终效果图如下: 下面介绍解决步骤: 解决步骤1:安装vue-print-nb插件——npm install vue-p…

2024年,“智慧城市”到底是持续拉跨还是稳步向前?

2024年“智慧城市”的发展趋势,总体上来看,是稳步向前的。 随着科技的不断发展,特别是物联网、云计算、大数据、人工智能等技术的日益成熟和普及,智慧城市的建设有了更为坚实的基础。这些技术不仅可以帮助城市实现更高效、智能的…

智慧公厕让社区生活更美好

随着科技的迅猛发展,城市管理、城市服务均使用科技化的手段进行升级改造,社区生活更美好赋予全新的智慧效能,其中智慧公厕也成为了城市环卫设施的新宠。智慧公厕以物联网、互联网、大数据、云计算、5G通信、自动化控制等技术为核心&#xff0…

Leetcoder Day23| 回溯part03:组合+分割

语言:Java/Go 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的所有不同组合 ,并以列表形式返回。你可以按任意顺序返回这些组合。 candidates 中的同一个…

经典文献阅读之--Scale jump-aware pose graph...(尺度跳跃感知位姿图)

0. 简介 我们常说的位姿图松弛指的就是基于闭环检测的边进行位姿图优化。而位姿图松弛已成为SLAM中不可或缺的补充,能够在满足逐对相对变换约束的目标下,实现传感器参考帧的高效全局配准。这些约束可以通过增量运动估计或全局地点识别来给出。尽管后一种…

SpreadJS+vue3练手使用

SpreadJS的练手使用 // 首先在 package.json 这个文件里{"name": "app-admin","private": true,"version": "0.0.0","type": "module","scripts": {"dev": "vite",&quo…

el-submenu is-opened 展开/闭合;el-submenu is-opened保持一个子菜单的展开控制

写了个mes系统目录 点击子菜单展开后&#xff0c;上一级菜单没有默认关闭。主流后台管理系统大部分都是保持一个子菜单关闭状态、 问度娘无果后&#xff0c;查询官网&#xff0c;一个属性搞定。 unique-opened 是否只保持一个子菜单的展开 加在 <el-menu 组件上即可 完整代…

《品牌声量》开播啦!

11月7日&#xff0c;中国品牌人物高端访谈节目《品牌声量》将在中央新影老故事频道和央视频等平台陆续播出。 《品牌声量》栏目一档专注中国企业/行政区品牌建设的大型演播厅访谈节目。栏目以“汇聚品牌思想&#xff0c;提升品牌声量”为宗旨&#xff0c;采用“著名主持人权威…

平价护眼台灯推荐知乎,真人测评五大优质护眼台灯推荐

孩子的学习情况是父母最关心的话题之一&#xff0c;当然&#xff0c;孩子的学习环境也是十分重要的&#xff0c;只有保持明亮且舒适的光线环境才能让孩子获得高效率。因此护眼台灯的出现成为众多宝妈人群青睐的对象&#xff0c;都希望能借助它的力量来保护孩子的视力健康。然而…

python matplotlib-->柱形图

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 #https://blog.csdn.net/aobulaien001/article/details/134611729 import pandas as pd import numpy as np import matplotlib.pyplot as plt import randomclass TestPltText():def __init__(self):super(TestPltTex…

Java 学习和实践笔记(22):package(包机制)、JDK常见的包、类的导入

前面学的类&#xff0c;每创建一个类&#xff0c;在电脑上就是创建了一个对应的类文件。而package 相当于文件夹对文件的管理作用。主要用于管理类、用于解决类的重名问题。这个含义很简单。因为实际的程序&#xff0c;类可能有成千上万个&#xff0c;这样就需要把不同功能的类…

国创证券:沪指止步八连阳 市场上涨核心逻辑未变

2月26日&#xff0c;商场全天震荡调整&#xff0c;三大指数均小幅跌落。到收盘&#xff0c;上证指数收盘报2977.02点&#xff0c;跌落0.93%&#xff0c;停步八连阳&#xff1b;深证成指报收9066.09点&#xff0c;跌落0.04%&#xff1b;创业板指报收1751.7点&#xff0c;跌落0.3…

一款.NET下 WPF UI框架介绍

WPF开源的UI框架有很多,如HandyControl、MahApps.Metro、Xceed Extended WPF Toolkit™、Modern UI for WPF (MUI)、Layui-WPF、MaterialDesignInXamlToolkit、等等,今天小编带大家认识一款比较常用的kaiyuanUI---WPF UI,这款ui框架美观现代化,用起来也超级方便, 界面展示…

Linux之定时任务①(实施必会!!!)

文章目录 常见脚本一、 什么是crond二、crond的使用场景一、apache服务器监控三、crond服务四、命令格式五、cron格式六、定时任务备份七、数据库定时备份八、使用shell脚本发送邮件 常见脚本 [rootlocalhost ~]# vim apacheSentry.sh#!/bin/bash # author: tt # description:…