https://www.luogu.org/problem/show?pid=1968#sub

题目背景

此处省略maxint+1个数

题目描述

在以后的若干天里戴维将学习美元与德国马克的汇率。编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值。

输入输出格式

输入格式:

输入文件的第一行是一个自然数N,1≤N≤100,表示戴维学习汇率的天数。

接下来的N行中每行是一个自然数A,1≤A≤1000。第i+1行的A表示预先知道的第i+1天的平均汇率,在这一天中,戴维既能用100美元买A马克也能用A马克购买100美元。

输出格式:

输出文件的第一行也是唯一的一行应输出要求的钱数(单位为美元,保留两位小数)。

注意:考虑到实数算术运算中进位的误差,结果在正确结果0.05美元范围内的被认为是正确的,戴维必须在最后一天结束之前将他的钱都换成美元。

输入输出样例

输入样例#1:

5
400
300
500
300
250
输出样例#1:

266.66

说明

样例解释 (无需输出)

Day 1 ... changing 100.0000 美元= 400.0000 马克

Day 2 ... changing 400.0000 马克= 133.3333 美元

Day 3 ... changing 133.3333 美元= 666.6666 马克

Day 5 ... changing 666.6666 马克= 266.6666 美元

用f[i][0]表示第i天的美元

 f[i][1]表示第i天的马克

如果今天是美元,就比较昨天是美元今天不变和昨天是马克今天换美元——f[i][0]=max(f[i-1][0],f[i-1][1]/a[i]*100);

若今天是马克~~~~~f[i][1]=max(f[i-1][1],f[i-1][0]/100*a[i]);

 #include <algorithm>
#include <cstdio> using namespace std; int n;
double a[];
double f[][]; int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%lf",&a[i]);
f[][]=100.000;
f[][]=0.000;
for(int i=;i<=n;i++)
{
f[i][]=max(f[i-][],f[i-][]/a[i]*);
f[i][]=max(f[i-][],f[i-][]/*a[i]);
}
printf("%.2lf",f[n][]);
return ;
}

最新文章

  1. rsync命令详解
  2. Effective C++ 之 Item 3:尽可能使用 const
  3. easyui-combobox的取值问题
  4. Android开发之SD卡上文件操作
  5. bzoj1324
  6. hadoop namenode多次格式化后,导致datanode启动不了
  7. UIView animateWithDuration 使用详解
  8. laravel memcached使用
  9. NancyFx 2.0的开源框架的使用-Caching
  10. java基础阅读卷1整理(待更新)
  11. python教程6-3:排序
  12. 微信小程序 初步认识一(微信运动步数)
  13. C# IE浏览器 判断是否已经打开了指定Url
  14. BroadcastReceiver插件化解决方案
  15. A - 不要62
  16. winSCP无法连接虚拟机Linux解决
  17. springboot跨域配置
  18. [SoapUI] Property Expansion in soapUI
  19. flask学习视频
  20. webservice之helloword(web)rs

热门文章

  1. Leetcode:remove_element
  2. nginx源代码分析--进程间通信机制 &amp;amp; 同步机制
  3. Element UI Form 每行显示多列,即多个 el-form-item
  4. AVL树、splay树(伸展树)和红黑树比较
  5. [SCOI 2010] 股票交易
  6. 杂项: EasyUI | jQuery EasyUI
  7. 2.2.3 修改JSX代码
  8. AWS S3 对象存储服务
  9. Entity Framework 的懒加载、预先加载、显示加载
  10. Android网络编程随想录(四)