PAT(Basic Level) Practice : 1037 在霍格沃茨找零钱 (20分)

1037 在霍格沃茨找零钱 (20分)

两个要注意的地方

输入用scanf更方便

scanf("%d.%d.%d %d.%d.%d",&P_Ga,&P_Si,&P_Kn,&A_Ga,&A_Si,&A_Kn);

判断条件

if(P_Ga>A_Ga||(P_Ga==A_Ga&&P_Si>A_Si)||(P_Ga==A_Ga&&P_Si==A_Si&&P_Kn>A_Kn))

代码

#include <iostream>
#include"stdlib.h"
#include <vector>
#include <string>
#include <cstdio>
//scanf printf防止超时
#include <algorithm>
//vector的sort
#include <sstream>
//转换
using namespace std;

#include<iomanip>
//精度

#include<cmath>
//round四舍五入取整


int main()
{
    int P_Ga,P_Si,P_Kn;
    int A_Ga,A_Si,A_Kn;
    int resGa,resSi,resKn;
    scanf("%d.%d.%d %d.%d.%d",&P_Ga,&P_Si,&P_Kn,&A_Ga,&A_Si,&A_Kn);
    if(P_Ga>A_Ga||(P_Ga==A_Ga&&P_Si>A_Si)||(P_Ga==A_Ga&&P_Si==A_Si&&P_Kn>A_Kn))
    {
        if(P_Kn>=A_Kn)
        {
            resKn=P_Kn-A_Kn;
        }else{
            resKn=P_Kn+29-A_Kn;
            P_Si--;
        }
        if(P_Si>=A_Si)
        {
            resSi=P_Si-A_Si;
        }else{
            resSi=P_Si+17-A_Si;
            P_Ga--;
        }

        resGa=P_Ga-A_Ga;
        printf("-%d.%d.%d\n",resGa,resSi,resKn);

    }else{
        if(A_Kn>=P_Kn)
        {
            resKn=A_Kn-P_Kn;
        }else{
            resKn=A_Kn+29-P_Kn;
            A_Si--;
        }
        if(A_Si>=P_Si)
        {
            resSi=A_Si-P_Si;
        }else{
            resSi=A_Si+17-P_Si;
            A_Ga--;
        }
        resGa=A_Ga-P_Ga;
        printf("%d.%d.%d\n",resGa,resSi,resKn);
    }
    return 0;
}

posted @ 2020-09-24 20:38  韩天尊  阅读(114)  评论(0)    收藏  举报