2616 - 美元汇率
时间限制 : 1 秒
内存限制 : 128 MB
在以后的若干天里戴维将学习美元与德国马克的汇率。编写程序帮助戴 维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价 值。
题目输入
输入文件的第一行是一个自然数N,1≤N≤100,表示戴维学习汇率的天 数。 接下来的N行中每行是一个自然数A,1≤A≤1000。第i+1行的A表示预先知道 的第i+1天的平均汇率,在这一天中,戴维既能用100美元买A马克也能用A马 克购买100美元。
题目输出
输出文件的第一行也是唯一的一行应输出要求的钱数(单位为美元,保留 两位小数)。 注意:考虑到实数算术运算中进位的误差,结果在正确结果0.05美元范 围内的被认为是正确的,戴维必须在最后一天结束之前将他的钱都换成美元。
输入/输出样例
输入格式
5 400 300 500 300 250
输出格式
266.66
C语言解答
#include<stdio.h> int main() { int d,max; int rate[100]; double m=100,flag=0; int i,l,k; scanf("%d",&d); for(i=0;i<d;i++) { scanf("%d",&rate[i]); } for(l=0;l<=d;l++) { max=rate[l]; if(flag==0) { for(k=l;k<d;k++) { if(max<rate[k]&&k!=d-1) { max=rate[k]; } else if(max>rate[k]) { l=k-1; flag=1; m=m*max/100; break; } } } else { for(k=l;k<d;k++) { if(max>rate[k]) { max=rate[k]; } else if(max<rate[k]||k==d-1) { l=k-1; flag=0; m=m/max*100; break; } } } } printf("%.2f\n",m); return 0; }
C++解答
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; int main(){ unsigned long long n; double tot=100; bool b; cin>>n; int a[100000]; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<n;i++){ if(!b&&a[i]>a[i+1]){ b=1; tot*=a[i]; } if(b&&a[i]<a[i+1]){ b=0; tot/=a[i]; } } if(b) tot/=a[n]; printf("%.2f",tot); return 0; }