【PAT甲级】A+B in Hogwarts

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,10​7​​], 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:

3.2.1 10.16.27

Sample Output:

14.1.28

解题思路:

先把A,B都转换成以Knut为单位进行相加得到一个总和sum(单位:Kunt),然后再把sum转换成Galleon.Sickle.Knut的形式即可。需要注意的是用int型会有一个测试点出现WA,把它改成long long型就好啦。

AC代码: 

#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%29;
    long long Sickle = (sum/29)%17;
    long long Galleon = (sum/29)/17;
    printf("%lld.%lld.%lld\n",Galleon,Sickle,Knut);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42449444/article/details/89516425