存钱问题、利润最大问题
2015-09-08 00:00
513 查看
1.假设银行一年整存零取得月息为8.9%(纯属娱乐哈),现在你手里有一笔钱,你打算在今后的100年中的年底取出10000元,到第10000年刚好取完,请问你现在该存多少?
和传统的数学题不一样,这里需要逆推来计算。
第i年年初的存款=(第(i+1)年年初存款+10000)/(1+0.089*12)
哈哈,你没有听错,今年存不到一万,以后年年可以取出一万……
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次,则到期时存款人应得到的本利合计为:
其中rateN为对应存款年限的利率。根据题意还可得到以下限制条件:
可以用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。
欢迎大家点击左上角的“关注”或右上角的“收藏”方便以后阅读。
为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp
版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp
和传统的数学题不一样,这里需要逆推来计算。
第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
版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp
相关文章推荐
- 关于PHP浮点数你应该知道的(All 'bogus' about the float in PHP)
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- float引起层飘出父层的解决方法
- 深入解析unsigned int 和 int
- asp Fix、Int、Round、CInt函数使用说明
- .Net Winform开发笔记(一)
- C#中float的取值范围和精度分析
- JavaScript 获取任一float型小数点后两位的小数
- short与int转换的小例子
- 数据库 数据类型float到C#类型decimal, float数据类型转化无效
- 无法从 int? 转换为 int 运行时出现错误
- mysql中sum float类型使用小数点的方法
- mysql中int、bigint、smallint 和 tinyint的区别详细介绍
- javascript css float属性的特殊写法
- 如何用js控制css中的float的代码
- Javascript将string类型转换int类型
- javascript中的float运算精度实例分析
- php下intval()和(int)转换使用与区别
- C#中把字符串String转换为整型Int的小例子
- mysql下float类型使用一些误差详解