`
linest
  • 浏览: 150432 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

ZOJ-1058 货币兑换

    博客分类:
  • acm
阅读更多
1058:一个人要到不同国家。从美国出发,各国汇率已知,最终回到美国。求钱经过一轮兑换后的价值。

算是简单题。但有陷阱。由于钱只能算到分,因此只能一次一次乘,四舍五入。不能先将所有汇率乘在一起,最后乘钱。

四舍五入的写法也要注意一下。
money = (int)(money*100 + 0.5);
money/=100;



#include<stdio.h>
#include<iostream>
using namespace std;

int main()
{
	int N;  //测试用例数
	int n;  //途径国家数
	double exchange[5][5];
	double rate;
	double money;
	int country[12];
    int k;

	cin>>N;
	while(N--)
	{
		for(int i=0;i<5;i++)
			for(int j=0;j<5;j++)
				cin>>exchange[i][j];
		
		while(1)
		{
			cin>>n;
			if(n==0)
				break;
			
			for(k=1;k<=n;k++)
				cin>>country[k];
			country[0]=1;
			country[k]=1;
			cin>>money;

			for(int i=1;i<=n+1;i++)
			{
				money*=exchange[country[i-1]-1][country[i]-1];
				money = (int)(money*100 + 0.5);
				money/=100;
			}
			printf("%.2f\n",money);
		}

		if(N!=0)
			printf("\n");
		

	}
	
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics