Posted on 2010-11-02 11:30
李东亮 阅读(1307)
评论(0) 编辑 收藏 引用 所属分类:
acm
ZOJ1058 Currency Exchange
水题一道,唯一需要注意的是题目中说只能取到货币的百分之一,因此在每次进行货币汇率转换之后都要进行处理,WA了一次就是因为到最后输出的时候才四舍五入,这个操作应该在每次转换汇率后都进行。
参考代码如下:
#include <stdio.h>
#include <stdlib.h>
double rates[5][5];
int indx[10];
int main(void)
{
int n;
int t;
double money;
int i, j;
int prev;
/*freopen("in.txt", "r", stdin);*/
scanf("%d", &t);
while (t--)
{
for (i = 0; i < 5; ++i)
{
for (j = 0; j < 5; ++j)
{
scanf("%lf", &rates[i][j]);
}
}
while (scanf("%d", &n) == 1 && n != 0)
{
prev = 0;
for (i = 0; i < n; ++i)
{
scanf("%d", &indx[i]);
}
scanf("%lf", &money);
money *= 100;
for (i = 0; i < n; ++i)
{
money *= rates[prev][indx[i]-1];
prev = indx[i]-1;
if (money - (int)money >= 0.5)
money = (int)money+1;
else
money = (int)money;
}
money *= rates[prev][0];
if (money - (int)money >= 0.5)
money = (int)money+1;
else
money = (int)money;
printf("%.2f\n", money/100);
}
if (t != 0)
{
printf("\n");
}
}
return 0;
}