PAT乙级1037
1037 在霍格沃茨找零錢 (20 分)
如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統(tǒng) —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,很容易。”現(xiàn)在,給定哈利應(yīng)付的價錢 P 和他實付的錢 A,你的任務(wù)是寫一個程序來計算他應(yīng)該被找的零錢。
輸入格式:
輸入在 1 行中分別給出 P 和 A,格式為 Galleon.Sickle.Knut,其間用 1 個空格分隔。這里 Galleon 是 [0, 10?7??] 區(qū)間內(nèi)的整數(shù),Sickle 是 [0, 17) 區(qū)間內(nèi)的整數(shù),Knut 是 [0, 29) 區(qū)間內(nèi)的整數(shù)。
輸出格式:
在一行中用與輸入同樣的格式輸出哈利應(yīng)該被找的零錢。如果他沒帶夠錢,那么輸出的應(yīng)該是負(fù)數(shù)。
輸入樣例 1:
10.16.27 14.1.28
輸出樣例 1:
3.2.1
1 #include<iostream> 2 #include<stdio.h> 3 #include<string.h> 4 #include<algorithm> 5 #include<cmath> 6 #include<vector> 7 #include<queue> 8 #include<bits/stdc++.h> 9 using namespace std; 10 bool f; 11 struct node 12 { 13 int a,b,c; 14 }e[3]; 15 bool cmp(node x,node y) 16 { 17 if(x.a!=y.a) 18 return x.a<y.a; 19 else if(x.b!=y.b) 20 return x.b<y.b; 21 else if(x.c!=y.c) 22 return x.c<=y.c; 23 } 24 int main() 25 { 26 int a=0,b=0,c=0; 27 scanf("%d.%d.%d %d.%d.%d",&e[0].a,&e[0].b,&e[0].c,&e[1].a,&e[1].b,&e[1].c); 28 e[2].a=e[1].a; 29 sort(e,e+2,cmp); 30 //cout<<e[0].a<<e[1].a; 31 if(e[1].a==e[2].a)f=1; 32 if(e[1].c<e[0].c) 33 { 34 c=e[1].c+29-e[0].c; 35 e[1].b-=1; 36 } 37 else 38 c=e[1].c-e[0].c; 39 if(e[1].b<e[0].b) 40 { 41 b=e[1].b+17-e[0].b; 42 e[1].a-=1; 43 } 44 else 45 b=e[1].b-e[0].b; 46 a=e[1].a-e[0].a; 47 if(f==0) 48 cout<<"-"; 49 printf("%d.%d.%d",a,b,c); 50 return 0; 51 }
測試點2一開始沒過,原因是把cmp函數(shù)寫錯了。
轉(zhuǎn)載于:https://www.cnblogs.com/zuiaimiusi/p/10878397.html
總結(jié)
- 上一篇: 鼋头渚日落哪里拍
- 下一篇: mui ios中form表单中点击输入