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

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

欢迎大家初步脱离麻瓜世界:

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


输入格式:


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


输出格式:


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


输入样例 1:



10.16.27 14.1.28

结尾无空行

输出样例 1:


-3.2.1

结尾无空行


我分了三种情况:


1.P<A

2.P=A

3.P>A

那么详情请看代码:


C语言:


#include <stdio.h>
int main() {
  int g1, s1, k1; //P应付的钱
  int g2, s2, k2; //A实付的钱
  int g, s, k; //找零
  scanf("%d.%d.%d %d.%d.%d", &g1, &s1, &k1, &g2, &s2, &k2);
  //1.P<A
  if ((g2 > g1) || (g2 == g1 && s2 > s1) || (g1 == g2 && s1 == s2 && k2 > k1)) {
    k = k2 - k1;
    if (k < 0) {
      k += 29;
      s2 -= 1;
    }
    s = s2 - s1;
    if (s < 0) {
      s += 17;
      g2 -= 1;
    }
    g = g2 - g1;
    printf("%d.%d.%d", g, s, k);
  }
  //2.P=A
  else if (g1 == g2 && s1 == s2 && k1 == k2) {
    printf("0.0.0");
  }
  //3.P>A
  else {
    k = k1 - k2;
    if (k < 0) {
      k += 29;
      s1 -= 1;
    }
    s = s1 - s2;
    if (s < 0) {
      s += 17;
      g1 -= 1;
    }
    g = g1 - g2;
    printf("-%d.%d.%d", g, s, k);
  }
  return 0;
}

C++:


#include <iostream>
using namespace std;
int main() {
  int g1, s1, k1; //P应付的钱
  int g2, s2, k2; //A实付的钱
  int g, s, k; //找零
  scanf("%d.%d.%d %d.%d.%d", &g1, &s1, &k1, &g2, &s2, &k2);
  //1.P<A
  if ((g2 > g1) || (g2 == g1 && s2 > s1) || (g1 == g2 && s1 == s2 && k2 > k1)) {
    k = k2 - k1;
    if (k < 0) {
      k += 29;
      s2 -= 1;
    }
    s = s2 - s1;
    if (s < 0) {
      s += 17;
      g2 -= 1;
    }
    g = g2 - g1;
    cout << g << "." << s << "." << k;
  }
  //2.P=A
  else if (g1 == g2 && s1 == s2 && k1 == k2) {
    cout << "0.0.0";
  }
  //3.P>A
  else {
    k = k1 - k2;
    if (k < 0) {
      k += 29;
      s1 -= 1;
    }
    s = s1 - s2;
    if (s < 0) {
      s += 17;
      g1 -= 1;
    }
    g = g1 - g2;
    cout << "-" << g << "." << s << "." << k;
  }
  return 0;
}

OK,恭喜大家成功脱离麻瓜世界。

相关文章
|
XML 存储 API
RAG效果优化:高质量文档解析详解
本文介绍了如何通过高质量的文档解析提升RAG系统整体的效果。
16130 15
|
12月前
|
Ubuntu Shell Linux
docker command
【10月更文挑战第31天】
195 6
|
存储 分布式计算 Hadoop
Hadoop集群规模扩展
【4月更文挑战第14天】Hadoop集群扩展可通过添加更多节点、垂直扩展(增强单节点资源)和水平扩展(增加节点数量)来实现。关键点包括规划扩展策略、确保集群稳定性和优化配置。注意在扩展过程中要保证数据完整性,并根据需求调整以提升集群性能和效率。
245 1
|
资源调度
Markdown 数学公式
Markdown 数学公式
169 0
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:保护你的数字生活
【5月更文挑战第31天】在数字化时代,网络安全和信息安全已经成为我们生活中不可或缺的一部分。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议来保护你的数字生活。
|
缓存 前端开发 API
手写中实现并学习ahooks——useRequest
最近业务没有之前紧张了,也是消失了一段时间,也总结了一些之前业务上的问题。 和同事沟通也是发现普通的async + await + 封装api在复杂业务场景下针对于请求的业务逻辑比较多,也是推荐我去学习一波ahooks,由于问题起源于请求,因此作者也是直接从 useRequest 开始看起。
369 1
|
机器学习/深度学习 人工智能 语音技术
重温经典:台大李宏毅的线性代数公开课
重温经典:台大李宏毅的线性代数公开课
重温经典:台大李宏毅的线性代数公开课
|
前端开发
零基础CSS入门教程(13)——边框样式
可以通过border-style设置边框样式,常用的有solid实线、dotted点线、dashed虚线三种。大家想必发现了,我们在设定边框样式时,一般都会同时设定边框样式、宽度、颜色,如果逐一定义,比较麻烦。我们前几个小结学习了有序列表无序列表,我们这一小节学习一下边框样式很重要的一个知识点。我们本小节学习了边框样式,内容有点多,大家要学会熟练使用,我们在开发中很常用。可以通过border-width调整边框的宽度,单位一般使用px像素。可以使用bolder-color指定边框的颜色,
零基础CSS入门教程(13)——边框样式
|
机器学习/深度学习 算法 Shell
基于opencv卷积网络实现人脸检测和性别分类 附项目代码
基于opencv卷积网络实现人脸检测和性别分类 附项目代码
275 0
基于opencv卷积网络实现人脸检测和性别分类 附项目代码
|
SQL 存储 算法
【MySQL速通篇004】这可能最详细的关于MySQL基础知识点的文章了
【MySQL速通篇004】这可能最详细的关于MySQL基础知识点的文章了
287 0