2616 - 美元汇率

通过次数

0

提交次数

0

时间限制 : 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;
}