zoukankan      html  css  js  c++  java
  • 1037 在霍格沃茨找零钱 (20 point(s))

    题目

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱 P 和他实付的钱 A,你的任务是写一个程序来计算他应该被找的零钱。

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

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

    输入样例 1:
    10.16.27 14.1.28
    结尾无空行
    输出样例 1:
    3.2.1
    结尾无空行
    输入样例 2:
    14.1.28 10.16.27
    结尾无空行
    输出样例 2:
    -3.2.1
    结尾无空行

    题解

    俺没写出来 只能抄了

    女神代码

    一位位的进位与借位 对于比较大的数据也可通过测试点

    #include<iostream>
    using namespace std;
    void swap(int&a, int&b)
    {
        int temp=a;
        a=b;
        b=temp;
    }
    int main()
    {
        int P[3],A[3],R[3];
        int i=0;
       for( i=0;i<3;i++)
       {
           cin>>P[i];cin.get();
       }
         for( i=0;i<3;i++)
       {
           cin>>A[i]; cin.get();
       }
        //进位与借位的处理
        //判断负号 保证大的减小的
        if(P[0] > A[0] || (P[0] == A[0] && P[1] > A[1]) || (P[0] == A[0]&&P[1] == A[1]&&P[2] > A[2]))
           {
                cout<<"-";
           }
            else
           {
               swap(P[0], A[0]); swap(P[1], A[1]); swap(P[2], A[2]);
           }
           //P-T> 0 保证
           
           R[2] = P[2]<A[2]?P[2]-A[2]+29:P[2]-A[2];
           //借位怎么说?
           P[1]=P[2]<A[2]?P[1]-1:P[1];
           R[1] = P[1]<A[1]?P[1]-A[1]+17:P[1]-A[1];
           R[0] = P[1]<A[1]?P[0]-A[0]-1:P[0]-A[0];
           cout<<R[0];
           for( i=1;i<3;i++)
       {
           cout<<"."<<R[i];
       }
    }
    

    简短通测代码

    直接转换成最小单位,再转换回来

    #include<iostream>
    using namespace std;
    int main()
    {
        int P[3],A[3],R[3];
        int i=0;
       for( i=0;i<3;i++)
       {
           cin>>P[i];cin.get();
       }
         for( i=0;i<3;i++)
       {
           cin>>A[i]; cin.get();
       }
       int count = A[0]*17*29+A[1]*29+A[2]-(P[0]*17*29+P[1]*29+P[2]);
        if(count<0)
        {
            cout<<"-";
            count = -count;
        }
        cout<<count/29/17<<"."<<count/29%17<<"."<<count%29;
    }
    
  • 相关阅读:
    Vue常用语法
    Vue--过滤器、指令、插件
    使用vue-cli创建项目
    electron Ctrl+滚轮事件 放大缩小
    axios 处理超时问题 记录
    electron 清除所有cookie记录
    electron用默认浏览器打开链接的3种实现方式
    electron 不支持Ctrl+滚动条放大缩小,自己动手做了一个react组件
    排序算法记录
    umi react 集成 spreadjs
  • 原文地址:https://www.cnblogs.com/most-silence/p/15495355.html
Copyright © 2011-2022 走看看