您的位置:首页 > 其它

ZOJ1058

2016-01-05 18:48 225 查看
简单模拟,只是有点细节问题需要注意。

首先要注意到每一次兑换都要四舍五入到百分位,然后就是四舍五入的方法(很遗憾我没有想出来,看了题解才知道

):

money *= a[b[n-1]][1];

money = (int)(money*100+0.5);

money /= 100;

代码:
#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
double a[6][6];
int b[10];
double money;
int n,T;

cin>>T;
for (int ii=1; ii<=T; ii++)
{
for (int i=1; i<=5; i++)
for (int j=1; j<=5; j++) cin>>a[i][j];
while (cin>>n && n!=0)
{
for (int i=0; i<n; i++) cin>>b[i];
cin>>money;
money *= a[1][b[0]];
money = (int)(money*100+0.5);
money /= 100;
for (int i=1; i<n; i++)
{
money *= a[b[i-1]][b[i]];
money = (int)(money*100+0.5);
money /= 100;
}
money *= a[b[n-1]][1];
money = (int)(money*100+0.5);
money /= 100;
printf("%.2lf\n",money);
}
if (ii!=T)cout<<endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: