简单模拟,只是有点细节问题需要注意。
首先要注意到每一次兑换都要四舍五入到百分位,然后就是四舍五入的方法(很遗憾我没有想出来,看了题解才知道):
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;
}