1037 在霍格沃茨找零钱 (20分)

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

输入格式:

输入在 1 行中分别给出 P 和 A,格式为 Galleon.Sickle.Knut,其间用 1 个空格分隔。这里 Galleon 是 [0, 1] 区间内的整数,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

 

 1 #include <iostream>
 2 using namespace std;
 3 int main(){    
 4     long long gp,ga;
 5     int sp,kp,sa,ka;
 6     int sickle;
 7     int knut;
 8     scanf("%lld.%d.%d %lld.%d.%d",&gp,&sp,&kp,&ga,&sa,&ka);
 9     long long gz=0;
10     int sz=0;int kz=0;
11     if((gp*17*29+sp*17+kp) <= (ga*17*29+sa*17+ka)){
12         gz=ga-gp;sz=sa-sp;kz=ka-kp;        
13         if(kz<0){
14             kz+=29;    sz--;
15         }
16         if(sz<0){
17             sz+=17;    gz--;
18         }    
19     }else{
20         gz=gp-ga;sz=sp-sa;kz=kp-ka;
21         cout<<"-";
22         if(kz<0){
23             kz=29+kz;sz--;
24         }
25         if(sz<0){sz=17+sz;gz--;
26         }            
27     }    
28     cout<<gz<<"."<<sz<<"."<<kz;        
29     return 0;
30 } 

 

posted @ 2020-02-17 20:49  葛杨杨  阅读(113)  评论(0编辑  收藏  举报