A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目大意:一次给出序号为1、2、3、4、5这5个国家之间的货币汇率,然后给出周游顺序<c1,c2,c3...cn>,每到一个国家,我们都将原有的外币换成这个国家的钱,那么给出初始金额m的情况下,完成<1,c1,...cn,1>,最终手头的钱会变成多少,结果应四舍五入至百分位。

  数理分析:在理解了题意之后,能够看到这是一道很基础的模拟题目。需要注意的细节是,所谓四舍五入至百分位,是要求每次交换都按照这个要求,而不是得到最终的money然后四舍五入,二者在多次交换后会产生可见的误差。第3组数据就是明显的例子。

  简单的参考代码如下:

[C] 纯文本查看 复制代码
#include<cstdio> using namespace std;

double rate[6][6];
int country[15];

int main()
{
     int t,n;

           for(int i = 1;i <= 5;i++)
               for(int j = 1;j <= 5;j++)
                  scanf("%lf",&rate[i][j]);

            double money;
            while(scanf("%d",&n) && n != 0)
            {


            country[n+2] = 1;
            country[1] = 1;
            for(int i = 2;i <= n + 1;i++)
                   scanf("%d",&country[i]);
                scanf("%lf",&money);
            for(int i = 1;i <= n + 1;i++)
            {
                  money *= rate[country[i]][country[i+1]];
                  money = (int)(money*100 + 0.5); //每次交换都应该进行百分位的四舍五入 money /= 100;
            }
         printf("%.2lf\n",money);
            }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马