• 找零钱


    链接:http://www.nowcoder.com/pat/6/problem/4063

    题目描述

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二

    十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱P和他实付的钱A,你的任务是写一个程序来计算他应该被找的零钱。

    输入描述:

    输入在1行中分别给出P和A,格式为“Galleon.Sickle.Knut”,其间用1个空格分隔。这里Galleon是[0, 107]]区间内的整数,Sickle是[0, 

    17)区间内的整数,Knut是[0, 29)区间内的整数。



    输出描述:

    在一行中用与输入同样的格式输出哈利应该被找的零钱。如果他没带够钱,那么输出的应该是负数。

    输入例子:

    10.16.27 14.1.28

    输出例子:

    3.2.1

    思路:先把对应单位的值相减,分别得到每种单位的货币差多少(或者多多少),然后判断当前最大单位的货币的数量是正还是负。如果是负,那么就钱不够,就把所有为正的货币数修改为负。
    14.1.28(应付的钱)
    10.16.27 (拥有的钱)   差为:-4.15.-1 但是答案为:-3.2.1,-表示钱不够。将-4改为-3,那么去掉的那个‘-1’的加隆就要加到15西可上,‘-1’对应的又是-17个西可,所以就是
    -3.-2.-1。一个负号-表示差,还差3.2.1个货币。
      1 #include "iostream"
      2 #include <iomanip>
      3 #include <string.h>
      4 #include <string>
      5 #include <vector>
      6 #include <cmath>
      7 #include <cctype>
      8 #include <algorithm>
      9 using namespace std;
     10  20 void change(string s, int *arr)
     21 {
     22     int i=0, k=0, value;
     23     memset(arr, 0, sizeof(arr));
     24     value = 0;
     25     while(s[i] != '.')
     26     {
     27         value = value*10+s[i++]-'0';
     28     }
     29     arr[k++] = value;
     30     ++i;
     31     value = 0;
     32     while(s[i] != '.')
     33     {
     34         value = value*10+s[i++]-'0';
     35     }
     36     arr[k++] = value;
     37     ++i;
     38     value = 0;
     39     while(i < s.length())
     40     {
     41         value = value*10+s[i++]-'0';
     42     }
     43     arr[k] = value;
     44 }
     45 int main()
     46 {
     47     string s1, s2;
     48     cin >>s1 >>s2;
     49     int price[3];
     50     int money[3];
     51     int res[3];
     52     change(s1, price);
     53     change(s2, money);
     54     int total = 0;
     55     total += (money[0]-price[0])*17*29;
     56     total += (money[1]-price[1])*29;
     57     total += (money[2]-price[2]);
     58     res[2] = total%29;
     59     total /= 29;
     60     res[1] = total%17;
     61     total /= 17;
     62     res[0] = total;
     63     if(res[0] > 0)
     64     {
     65         if(res[1] < 0)
     66         {
     67             --res[0];
     68             res[1] += 17;
     69         }
     70         if(res[2] < 0)
     71         {
     72             --res[1];
     73             res[2] += 29;
     74         }
     75     }
     76     if(res[0] < 0)
     77     {
     78         if(res[1] > 0)
     79         {
     80             ++res[0];
     81             res[1] -= 17;
     82         }
     83         if(res[2] > 0)
     84         {
     85             ++res[1];
     86             res[2] -= 29;
     87         }
     88     }
     89     if(res[0] == 0)
     90     {
     91         if(res[1] > 0)
     92         {
     93             if(res[2] < 0)
     94             {
     95                 --res[1];
     96                 res[2] += 29;
     97             }
     98         }
     99         if(res[1] < 0)
    100         {
    101             if(res[2] > 0)
    102             {
    103                 ++res[1];
    104                 res[2] -= 29;
    105             }
    106         }
    107     }
    108     if(res[0]<0 || res[1]<0 || res[2]<0)
    109     {
    110         cout <<'-' <<-res[0] <<'.' <<-res[1] <<'.' <<-res[2] <<endl;
    111     }
    112     else
    113     {
    114         cout <<res[0] <<'.' <<res[1] <<'.' <<res[2] <<endl;
    115     }
    116     return 0;
    117 }
  • 相关阅读:
    Python3网络学习案例三:编写web server
    struct.pack()和struct.unpack() 详解(转载)
    Python3网络学习案例二:traceroute详解
    Redis 配置
    vue之this.$route.params和this.$route.query的区别
    解决bugs: mybatisPlus 分页不能生效
    解决bug :"status":400,"error":"Bad Request","message":"Required request body is missing:
    vue,ElementUI中Switch 开关,switch 打开时的值为数字,该如何设置
    解决bug:vue项目中点击修改按钮,不能显示要修改的分类名字
    The 'Access-Control-Allow-Origin' header contains multiple values'*, *', but only one is allowed.
  • 原文地址:https://www.cnblogs.com/mtc-dyc/p/4630711.html
Copyright © 2020-2023  润新知