PAT乙级-1037

0、难点

  • swap(a,b)函数
  • 进位与借位的实现方法

1、题目

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

2、代码

#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
    int a,b,c,m,n,t,x,y,z;
    scanf("%d.%d.%d %d.%d.%d",&a,&b,&c,&m,&n,&t);
    // 应付 带的钱
    if(a>m || (a==m && b>n) || (a==m && b==n &&c>t)){	//要付的钱比带的钱多
        printf("-");
    }else{
        swap(a,m);swap(b,n);swap(c,t);		//将将多的放在前面,方便前后相减
        //则有一下情况
        // 3.x.x 2.x.x			最高位大于左边
        //	3.2.x 3.1.x			最高位相等,但中位更大
        // 3.2.1 3.2.0			最高位相等,中位相等,最低位更大
        // 3.2.1 3.2.1          完全相等
    }

    z=c>=t?c-t:c+29-t;	//末尾相减,如果不够借位+29
    b=c>=t?b:b-1;	//若末尾小减大则必借了位,这里中位则-1
    y=b>=n?b-n:b+17-n;		//中位相减,如果不够借位+17
    x=b>=n?a-m:a-1-m;	// 因为swap交换了,所以最高位直接相减即可,但是可能有借位,所以判断一下中位大小并-1

    printf("%d.%d.%d",x,y,z);

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一个对称矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值