前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1037 在霍格沃茨找零钱 (20 分)

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

作者头像
可爱见见
发布2019-09-24 16:23:36
4540
发布2019-09-24 16:23:36
举报
文章被收录于专栏:卡尼慕卡尼慕

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

如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱 P 和他实付的钱 A,你的任务是写一个程序来计算他应该被找的零钱。

输入格式:

输入在 1 行中分别给出 PA,格式为 Galleon.Sickle.Knut,其间用 1 个空格分隔。这里 Galleon 是 [0, 107] 区间内的整数,Sickle 是 [0, 17) 区间内的整数,Knut 是 [0, 29) 区间内的整数。

输出格式:

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

输入样例 1:

代码语言:javascript
复制
10.16.27 14.1.28

输出样例 1:

代码语言:javascript
复制
3.2.1

输入样例 2:

代码语言:javascript
复制
14.1.28 10.16.27

输出样例 2:

代码语言:javascript
复制
-3.2.1

【我的代码】

代码语言:javascript
复制
// 1037 在霍格沃茨找零钱 (20 分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <cstdio>
using namespace std;
int changeMoney(int S, int K, int G) {
    int P_All_S, P_ALL_K;
    P_All_S = S + G * 17;
    P_ALL_K = P_All_S * 29 + K;
    return P_ALL_K;
}
int main()
{
    //输入
    int P_S, P_G, P_K;
    int A_S, A_G, A_K;
    scanf_s("%d.%d.%d", &P_G, &P_S, &P_K);
    scanf_s("%d.%d.%d", &A_G, &A_S, &A_K);

    //先全部换成最小的单位
    int All_P_K, All_A_K;
    All_P_K = changeMoney(P_S, P_K, P_G);
    All_A_K = changeMoney(A_S, A_K, A_G);
    //作差判断正负
    int cha = All_A_K - All_P_K;
    if (!cha)
        cout << "0.0.0";
    else if (cha > 0) {
        int a = cha % 29;
        cha /= 29;
        int b = cha % 17;
        int c = cha / 17;
        printf("%d.%d.%d", c, b, a);
    }
    else {
        cha *= -1;
        int a = cha % 29;
        cha = cha / 29;
        int b = cha % 17;
        int c = cha / 17;
        printf("-%d.%d.%d", c, b, a);
    }
    return 0;
}

【总结】

  • 很容易就想到全部转成最小单位来计算然后逐个求出更大的单位的值。
  • 我之后尝试了使用不同的方法,但是测试点2一直未能通过。
  • 测试点5、6跟0.0.0-0.0.0这类相关。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡尼慕 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输入格式:
  • 输出格式:
  • 输入样例 1:
  • 输出样例 1:
  • 输入样例 2:
  • 输出样例 2:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档