Skip to content

1037 在霍格沃茨找零钱

Statement

Metadata

  • 作者: CHEN, Yue
  • 单位: 浙江大学
  • 代码长度限制: 16 KB
  • 时间限制: 400 ms
  • 内存限制: 64 MB

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

输入格式

输入在 1 行中分别给出 PA,格式为 Galleon.Sickle.Knut,其间用 1 个空格分隔。这里 Galleon 是 [0, 10^7] 区间内的整数,Sickle 是 [0, 17) 区间内的整数,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

Solution

#include <bits/stdc++.h>
using namespace std;
int main() {
    int a, b, c, d, e, f, tot1 = 0, tot2 = 0, total;
    scanf("%d.%d.%d %d.%d.%d", &a, &b, &c, &d, &e, &f);
    tot1 = (a * 17 + b) * 29 + c;
    tot2 = (d * 17 + e) * 29 + f;
    if (tot1 < tot2) {
        total = tot2 - tot1;
        a = total / 493;
        total %= 493;
        b = total / 29;
        c = total % 29;
        printf("%d.%d.%d\n", a, b, c);
    } else if (tot1 == tot2)
        printf("0.0.0\n");
    else {
        total = tot1 - tot2;
        a = total / 493;
        total %= 493;
        b = total / 29;
        c = total % 29;
        printf("-%d.%d.%d\n", a, b, c);
    }
}

Last update: May 4, 2022
Back to top