Description
Input
接下来的N行中每行是一个自然数A,1≤A≤1000。第i+1行的A表示预先知道的第i+1天的平均汇率,在这一天中,戴维既能用100美元买A马克也能用A马克购买100美元。
Output
Sample Input
5
400
300
500
300
250
Sample Output
266.67
Hint
Day 2 ... changing 400.0000 马克= 133.3333 美元
Day 3 ... changing 133.3333 美元= 666.6666 马克
Day 5 ... changing 666.6666 马克= 266.6666 美元
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=200;
double dp[maxn][2];
double a[maxn];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++)
{
scanf("%lf",&a[i]);
}
dp[0][0]=0.0;//马克数
dp[0][1]=1.0;//美元数
for(int i=1;i<=n;i++)
{
dp[i][1]=max(dp[i-1][1],dp[i-1][0]/a[i]);//当前美元是由前一天马克转来的
dp[i][0]=max(dp[i-1][0],dp[i-1][1]*a[i]);//当前马克是由前一天美元转来的
}
printf("%.2f\n",dp[n][1]*100.0);//*100原因是他最开始是有100美元的
}
}