版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42449444/article/details/89516425
Problem Description:
If you are a fan of Harry Potter, you would know the world of magic has its own currency system -- as Hagrid explained it to Harry, "Seventeen silver Sickles to a Galleon and twenty-nine Knuts to a Sickle, it's easy enough." Your job is to write a program to compute A B where A and B are given in the standard form of Galleon.Sickle.Knut
(Galleon
is an integer in [0,107], Sickle
is an integer in [0, 17), and Knut
is an integer in [0, 29)).
Input Specification:
Each input file contains one test case which occupies a line with A and B in the standard form, separated by one space.
Output Specification:
For each test case you should output the sum of A and B in one line, with the same format as the input.
Sample Input:
代码语言:javascript复制3.2.1 10.16.27
Sample Output:
代码语言:javascript复制14.1.28
解题思路:
先把A,B都转换成以Knut为单位进行相加得到一个总和sum(单位:Kunt),然后再把sum转换成Galleon.Sickle.Knut的形式即可。需要注意的是用int型会有一个测试点出现WA,把它改成long long型就好啦。
AC代码:
代码语言:javascript复制#include <bits/stdc .h>
using namespace std;
int main()
{
long long Ag,As,Ak,Bg,Bs,Bk;
scanf("%lld.%lld.%lld %lld.%lld.%lld",&Ag,&As,&Ak,&Bg,&Bs,&Bk);
long long sum = (Ag*17 As)*29 Ak (Bg*17 Bs)*29 Bk; //A B的总和(单位:Knut)
long long Knut = sum);
long long Sickle = (sum/29);
long long Galleon = (sum/29)/17;
printf("%lld.%lld.%lldn",Galleon,Sickle,Knut);
return 0;
}