zoukankan      html  css  js  c++  java
  • ZOJ Problem Set

    ZOJ Problem Set - 1058
    Currency Exchange

    Time Limit: 2 Seconds                                     Memory Limit: 65536 KB                            

                When Issac Bernand Miller takes a trip to another country, say to France, he exchanges  his US dollars for French francs. The exchange rate is a real number such that  when multiplied by the number of dollars gives the number of francs. For example,  if the exchange rate for US dollars to French francs is 4.81724, then 10 dollars  is exchanged for 48.1724 francs. Of course, you can only get hundredth of a franc,  so the actual amount you get is rounded to the nearest hundredth. (We'll round  .005 up to .01.) All exchanges of money between any two countries are rounded  to the nearest hundredth. 

    Sometimes Issac's trips take him to many countries and he exchanges money from   one foreign country for that of another. When he finally arrives back home,   he exchanges his money back for US dollars. This has got Issac thinking about   how much if his unspent US dollars is lost (or gained!) to these exchange rartes.   You'll compute how much money Issac ends up with if he exchanges it many times.   You'll always start with US dollars and you'll always end with US dollars.

    Input

    The first 5 lines of input will be the exchange rates between 5 countries,   numbered 1 through 5. Line i will five the exchange rate from country i to each   of the 5 countries. Thus the jth entry of line i will give the exchange rate   from the currency of country i to the currency of country j. the exchange rate   form country i to itself will always be 1 and country 1 will be the US. Each   of the next lines will indicate a trip and be of the form

    N c1 c2 �� cn m

    Where 1 <= n <= 10 and c1, ��, cn are integers from 2 through 5 indicating   the order in which Issac visits the countries. (A value of n = 0 indicates end   of input, in which case there will be no more numbers on the line.) So, his   trip will be 1 -> c1 -> c2 -> �� -> cn -> 1. the real number m   will be the amount of US dollars at the start of the trip.

    Output

    Each trip will generate one line of output giving the amount of US dollars   upon his return home from the trip. The amount should be fiven to the nearest   cent, and should be displayed in the usual form with cents given to the right   of the decimal point, as shown in the sample output. If the amount is less than   one dollar, the output should have a zero in the dollars place.

    This problem contains multiple test cases!

    The first line of a multiple input is an integer N, then a blank line followed   by N input blocks. Each input block is in the format indicated in the problem   description. There is a blank line between input blocks.

    The output format consists of N output blocks. There is a blank line between   output blocks.


    Sample Input

    1

    1 1.57556 1.10521 0.691426 7.25005
      0.634602 1 0.701196 0.43856 4.59847
      0.904750 1.42647 1 0.625627 6.55957
      1.44616 2.28059 1.59840 1 10.4843
      0.137931 0.217555 0.152449 0.0953772 1
      3 2 4 5 20.00
      1 3 100.00
      6 2 3 4 2 4 3 120.03
      0

    Sample Output

    19.98
      99.99
      120.01

    注意每次计算出money时都需要保留两位小数

    AC代码:

    #include<stdio.h>
    #include<iostream>
    #define MAX 10
    using namespace std;
    float rate[MAX][MAX];
    void table()
    {
     for(int i=1;i<=5;i++)
     {
      for(int j=1;j<=5;j++)
      {
       cin>>rate[i][j];
      }
     }
    }
    float transform(float num)
    {
     num=(int)(num*100+0.5);
     num/=100;
     return num;
    }
    int main()
    {
     int cas;
        cin>>cas;
     while(cas--)
     {
      table();
      int n;
      while(1)
      {
          cin>>n;
       if(n==0)break;
       int b[15];
       int i;
       for(i=0;i<n;i++)
       {
        cin>>b[i];
       }
       float money;
       cin>>money;
       int from=1;
       for(i=0;i<n;i++)
       {
        money=money*rate[from][b[i]];
        from=b[i];
        money=transform(money);
       }
       money=money*rate[from][1];
       money=transform(money);
       printf("%.2lf ",money);
      }
      if(cas!=0)cout<<endl;
     }
    }

  • 相关阅读:
    asp.net mvc 项目架构解析
    新手如何发网站外链,网站的外链如何发,发外链的方法集合
    win2008r2的iis7.5手动建站方法,iis7.5中用独立用户建立网站的方法,提高网站安全性
    ex:Could not load file or assembly 'System.Web.Helpers, Version=2.0.0.0, Culture=neutral, . 系统找不到指定的文件。
    微信开放平台---网站应用开发---微信登录功能 简介
    如何使用ILSpy 把发布版本反编译成源码
    沐雪多用户微信公众平台开发源码,商城小程序源码(2018年最新的asp.net C# 微信源码,小程序源码)
    2015淘宝最新排名新规则
    群主微信sdk说明地址
    Quantization Method
  • 原文地址:https://www.cnblogs.com/jackwuyongxing/p/3366514.html
Copyright © 2011-2022 走看看