PAT 乙级 1037. 在霍格沃茨找零钱(20)
2017-01-06 13:04
246 查看
1037. 在霍格沃茨找零钱(20)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱P和他实付的钱A,你的任务是写一个程序来计算他应该被找的零钱。输入格式:
输入在1行中分别给出P和A,格式为“Galleon.Sickle.Knut”,其间用1个空格分隔。这里Galleon是[0, 107]区间内的整数,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
分析:
这又是一道深坑题···因为网页上!二十九是分行显示的···让我以为是19!·面对错误答案我真是百思不得其解,结果发现是这个问题···真是无语了。仔细审题是第一步啊亲~
using System; namespace PAT { class Program { static void Main() { string[] moneys = Console.ReadLine().Split(' '); long money1 = TotalKnut(moneys[0]); long money2 = TotalKnut(moneys[1]); CalculateKnut(money1, money2); } static long TotalKnut(string money) { string[] numStrs = money.Split('.'); long sum = 0; sum += int.Parse(numStrs[0]) * 29 * 17; sum += int.Parse(numStrs[1]) * 29; sum += int.Parse(numStrs[2]); return sum; } static void CalculateKnut(long knut1, long knut2) { bool flag = knut1 <= knut2 ? true : false; //正负符号 long diff = Math.Abs(knut1 - knut2); long galleon = diff / (29 * 17); diff -= galleon * 29 * 17; long sickle = diff / 29; diff -= sickle * 29; if (!flag) Console.Write("-"); Console.Write("{0}.{1}.{2}", galleon, sickle, diff); } } }
相关文章推荐
- PAT 乙级 1037. 在霍格沃茨找零钱(20)
- PAT-乙级-1037. 在霍格沃茨找零钱(20)
- 1037. 在霍格沃茨找零钱(20)PAT 乙级
- PAT 乙级 1037. 在霍格沃茨找零钱(20)Java版
- PAT乙级.1037. 在霍格沃茨找零钱(20)
- pat乙级1037. 在霍格沃茨找零钱(20)
- 1037. 在霍格沃茨找零钱(20)-PAT乙级真题
- PAT 乙级 1037. 在霍格沃茨找零钱(20)Java版
- 浙江大学PAT_乙级_1037. 在霍格沃茨找零钱(20)
- pat 乙级 1037. 在霍格沃茨找零钱(20)
- PAT乙级—1037. 在霍格沃茨找零钱(20)-native
- PAT乙级1037. 在霍格沃茨找零钱(20)(JAVA)
- PAT乙级真题及训练集(17)--1037. 在霍格沃茨找零钱(20)
- PAT乙级1037(C语言)-在霍格沃茨找零钱(20)
- PAT乙级1037. 在霍格沃茨找零钱(20)
- [PAT乙级]1037. 在霍格沃茨找零钱(20)
- 1037. 在霍格沃茨找零钱(20) PAT乙级真题
- PAT乙级1037. 在霍格沃茨找零钱(20)
- PAT-乙级-1037. 在霍格沃茨找零钱(20)
- PAT乙级1037. 在霍格沃茨找零钱(20)