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

内的整数,Knut是[0, 29)区间内的整数。

输出格式:

在一行中用与输入同样的格式输出哈利应该被找的零钱。如果他没带够钱,那么输出的应该是负数。

输入样例1:

10.16.27 14.1.28

输出样例1:

3.2.1

输入样例2:

14.1.28 10.16.27

输出样例2:

 

-3.2.1

#include <iostream>
#include<cstdio>
using namespace std;
typedef struct Money{

int galleon,sickle,knut;
}Money;

Money compu(Money m1,Money m2)
{
    Money result;
     if(m1.knut>m2.knut)
    {
        result.knut=m2.knut+29-m1.knut;
        m2.sickle=m2.sickle-1;
    }
    else
    {
         result.knut=m2.knut-m1.knut;
    }

     if(m1.sickle>m2.sickle)
    {
        result.sickle =m2.sickle+17-m1.sickle;
        m2.galleon=m2.galleon-1;
    }
    else
    {
         result.sickle=m2.sickle-m1.sickle;
    }

         result.galleon=m2.galleon-m1.galleon;

    return result;

}
int main()
{
    Money m1,m2,result;
    int cm1,cm2;
    scanf("%d.%d.%d",&m1.galleon,&m1.sickle,&m1.knut);
    scanf("%d.%d.%d",&m2.galleon,&m2.sickle,&m2.knut);

   cm1=m1.galleon*17*29+m1.sickle*29+m1.knut;
   cm2=m2.galleon*17*29+m2.sickle*29+m2.knut;
   cm1<cm2?result=compu(m1,m2):result=compu(m2,m1);

   if(cm1>cm2)cout<<"-";
    cout<<result.galleon<<"."<<result.sickle<<"."<<result.knut<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值