存钱问题、利润最大问题

简介:

1.假设银行一年整存零取得月息为8.9%(纯属娱乐哈),现在你手里有一笔钱,你打算在今后的100年中的年底取出10000元,到第10000年刚好取完,请问你现在该存多少?

和传统的数学题不一样,这里需要逆推来计算。

第i年年初的存款=(第(i+1)年年初存款+10000)/(1+0.089*12)

#include<stdio.h>

int main()
{
    int i;
    float money=0;
    for(i=0;i<100;i++)
        money=(money+10000)/(1+0.089*12);
    printf("You just need to put %.2f in the Bank.\n",money);
}
You just need to put 9363.30 in the Bank.

哈哈,你没有听错,今年存不到一万,以后年年可以取出一万……

2.可是,我却手里却没有1万…… 那么怎样存钱使利润最大呢?

现在银行整存整取存款不同期限的月息利率分别为:

0.63% 期限=1年
0.66% 期限=2年
0.69% 期限=3年
0.75% 期限=5年
0.84% 期限=8年
利息=本金 * 月息利率 * 12 * 存款年限。

题目和解答都源于网络,因为解答都挺好的所以就不做什么改动啦……

为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20年为止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一样的。
分析题意,设X元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得到的本利合计为:

2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8

其中rateN为对应存款年限的利率。根据题意还可得到以下限制条件:

0<=i8<=2
0<=i5<=(20-8*i8)/5
0<=i3<=(20-8*i8-5*i5)/3
0<=i2<=(20-8*i8-5*i5-3*i3)/2
0<=i1=20-8*i8-5*i5-3*i3-2*i2

可以用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。

#include<stdio.h>
#include<math.h>

int main()
{
    printf("How many money do you have?\n");
    double money;
    scanf("%lf",&money);
    int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;
    float max=0,term;
    for(i8=0;i8<3;i8++)
        for(i5=0;i5<=(20-8*i8)/5;i5++)
            for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++)
                for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++)
                {
                    i1=20-8*i8-5*i5-3*i3-2*i2;
                    term=money*pow((double)(1+0.0063*12),(double)i1)
                              *pow((double)(1+2*0.0063*12),(double)i2)
                              *pow((double)(1+3*0.0069*12),(double)i3)
                              *pow((double)(1+5*0.0075*12),(double)i5)
                              *pow((double)(1+8*0.0084*12),(double)i8);

                    if(term>max)
                    {
                        max=term;n1=i1;n2=i2;n3=i3;n5=i5;n8=i8;
                    }
                }

    printf("For maxinum profit,he should so save his money in a bank:\n");
    printf(" made fixed deposit for 8 year: %d times\n",n8);
    printf(" made fixed deposit for 5 year: %d times\n",n5);
    printf(" made fixed deposit for 3 year: %d times\n",n3);
    printf(" made fixed deposit for 2 year: %d times\n",n2);
    printf(" made fixed deposit for 1 year: %d times\n",n1);
    printf(" Toal: %.2f\n",max);
}


欢迎大家点击左上角的“关注”或右上角的“收藏”方便以后阅读。


为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp

目录
相关文章
|
存储 Java
map中存储的是引用,而不是对象本身
该内容是关于Java编程中验证Map存储引用而非复制对象的示例。创建大型List导致内存增加,说明List确实占用空间。通过Person类示例,将不同对象放入Map,改变一个对象的属性后,比较原对象与Map中的键值对,发现两者相等,证明Map保存的是对象引用。
234 5
|
SQL 消息中间件 分布式数据库
Flink问题之State 0点清除如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
249 0
|
iOS开发
IOS Pods Failed to connect to www.gstatic.com port 443: Operation timed out
IOS Pods Failed to connect to www.gstatic.com port 443: Operation timed out
239 0
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
280 3
|
11月前
|
SQL 并行计算 数据挖掘
一份写给数据工程师的 Polars 迁移指南:将 Pandas 速度提升 20 倍代码重构实践
Polars作为现代化的数据处理框架,通过先进的工程实践和算法优化,为数据科学工作者提供了高效的数据处理工具。在从Pandas迁移时,理解这些核心概念和最佳实践将有助于充分发挥Polars的性能优势。
650 4
|
11月前
|
监控 持续交付 数据库
构建高效的后端服务:微服务架构的深度解析
在现代软件开发中,微服务架构已成为提升系统可扩展性、灵活性和维护性的关键。本文深入探讨了微服务架构的核心概念、设计原则和最佳实践,通过案例分析展示了如何在实际项目中有效地实施微服务策略,以及面临的挑战和解决方案。文章旨在为开发者提供一套完整的指导框架,帮助他们构建出更加高效、稳定的后端服务。
|
JSON 关系型数据库 MySQL
这个问题是由于Flink的Table API在处理MySQL数据时,将MULTISET类型的字段转换为了JSON格式
【1月更文挑战第17天】【1月更文挑战第84篇】这个问题是由于Flink的Table API在处理MySQL数据时,将MULTISET类型的字段转换为了JSON格式
236 1
|
机器学习/深度学习 数据采集 编解码
【核磁共振成像】并行采集MRI
【核磁共振成像】并行采集MRI
【核磁共振成像】并行采集MRI
|
人工智能
StyleGAN 调整面部表情,让虚拟人脸更生动
赋予 AI 人脸表情,让其更生动自然
485 3
StyleGAN 调整面部表情,让虚拟人脸更生动
|
数据采集 监控 Java
工业物联网的java应用
工业物联网的java应用