【PAT甲级】A+B in Hogwarts

2019-11-08 14:36:30 浏览数 (1)

版权声明:本文为博主原创文章,遵循 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,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:

代码语言: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;
}

0 人点赞