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

本文介绍了一种在Knut计数制下计算两个数值差值的方法,并通过两次代码提交过程展示了如何修复一个小错误以得到正确的结果。关键在于正确判断大小关系并逐位转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路 为全部转化为Knut 做差后 逐位转换回来 即为最终结果。

第一次提交 最后一个测试点错了···

错误代码

#include<iostream>
#include<cstring>
#include<map>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;

int main()
{
    int P_G, P_S, P_K;
    int A_G, A_S, A_K;
    char c;
    while(cin>>P_G>>c>>P_S>>c>>P_K)
    {
        cin>>A_G>>c>>A_S>>c>>A_K;
        int P_Sum = P_G*17*29 + P_S*29 + P_K;
        int A_Sum = A_G*17*29 + A_S*29 + A_K;
        int K = ( abs(P_Sum - A_Sum) )%29;
        int S = ( abs(P_Sum - A_Sum) )/29%17;
        int G =  ( abs(P_Sum - A_Sum) )/29/17;
        if( P_Sum<A_Sum )
            cout<<G<<'.'<<S<<'.'<<K<<endl;
        else
            cout<<'-'<<G<<'.'<<S<<'.'<<K<<endl;
    }
    return 0;
}
第二次提交

AC代码

比对一下 欢迎大家 来“找茬”~~

#include<iostream>
#include<cstring>
#include<map>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;

int main()
{
    int P_G, P_S, P_K;
    int A_G, A_S, A_K;
    char c;
    while(cin>>P_G>>c>>P_S>>c>>P_K)
    {
        cin>>A_G>>c>>A_S>>c>>A_K;
        int P_Sum = P_G*17*29 + P_S*29 + P_K;
        int A_Sum = A_G*17*29 + A_S*29 + A_K;
        int K = ( abs(P_Sum - A_Sum) )%29;
        int S = ( abs(P_Sum - A_Sum) )/29%17;
        int G =  ( abs(P_Sum - A_Sum) )/29/17;
        if( P_Sum<=A_Sum )
            cout<<G<<'.'<<S<<'.'<<K<<endl;
        else
            cout<<'-'<<G<<'.'<<S<<'.'<<K<<endl;
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值