1058 A+B in Hogwarts(小坑,测试点2分析,简单题,进制转换)

目录

题目

测试样例

输入样例

输出样例

提交结果截图

测试点2分析

AC前的提交截图

AC前的源代码

带详细注释的源代码


题目

1058 A+B in Hogwarts(小坑,测试点2分析,简单题,进制转换)_第1张图片

题目链接:

1058 A+B in Hogwartsicon-default.png?t=L892https://pintia.cn/problem-sets/994805342720868352/problems/994805416519647232 

测试样例

输入样例

3.2.1 10.16.27

输出样例

14.1.28

提交结果截图

1058 A+B in Hogwarts(小坑,测试点2分析,简单题,进制转换)_第2张图片 

测试点2分析

这题我第一次提交就是测试点2没过,本来是以为是我把A+B转换为了Knuts而导致数据大于long long所能表示的最大值,但是我改成了大整数加法后还是没能通过。。。就挺离谱的。后面发现输入Galleon、Sickle、Knut我定义的是int型,就试着把他们改成了long long型,结果就AC了。

AC前的提交截图

1058 A+B in Hogwarts(小坑,测试点2分析,简单题,进制转换)_第3张图片

AC前的源代码

#include 
#include 
#include 
using namespace std;
#define exchange1 (17*29)
#define exchange2 29

int main()
{
    long long A, B, res;
    int Galleon, Sickle, Knut;//17*29 : 29 :1
    scanf("%d.%d.%d", &Galleon, &Sickle, &Knut);
    A = Galleon*exchange1 + Sickle*exchange2 + Knut;
    scanf("%d.%d.%d", &Galleon, &Sickle, &Knut);
    B = Galleon*exchange1 + Sickle*exchange2 + Knut;
    res = A+B;//可能会溢出,测试点2过不了
    cout<

 所以,测试点2过不了其实就是因为他给的输入数据Galleon.Sickle.Knut就已经超过了int型的表示范围

带详细注释的源代码

#include 
#include 
#include 
using namespace std;
#define exchange1 (17*29)
#define exchange2 29

int main()
{
    long long A, B, res;
    long long Galleon, Sickle, Knut;//17*29 : 29 :1
    scanf("%lld.%lld.%lld", &Galleon, &Sickle, &Knut);//输入用long long
    A = Galleon*exchange1 + Sickle*exchange2 + Knut;//A转换为Knut
    scanf("%lld.%lld.%lld", &Galleon, &Sickle, &Knut);
    B = Galleon*exchange1 + Sickle*exchange2 + Knut;//B也转换为Knut
    res = A+B;//相加
    cout<

你可能感兴趣的:(PAT,(Advanced,Level),Practice,c语言,算法,c++,数据结构,PTA)