题目链接:1037 在霍格沃茨找零钱 (20 point(s))

题目描述

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

输入格式

输入在 1 行中分别给出 P 和 A,格式为 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

10000000.16.28 10000000.16.27

输出样例 2

-0.0.1

Java代码

/**********************************************************************************
Submit Time Status Score Problem Compiler Run Time User
7/26/2019, 20:01:14 Accepted 20 1037 Java (openjdk) 74 ms wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException; public class Main {
private static int[] P = new int[3]; // 应付的价钱P
private static int[] A = new int[3]; // 实付的钱A
private static int galleon, sickle, knut; // 应该被找零的钱
private static boolean enough = true; // 钱足够 private static void change(int[] P, int[] A) { // 找零
if (A[2] < P[2]) { // Knut币不够
A[1] -= 1; // 借一张Sickle币
A[2] += 29; // 兑换成29张Knut币
}
knut = A[2] - P[2]; // 找零的Knut币
if (A[1] < P[1]) { // Sickle币不够
A[0] -= 1; // 借一张Galleon币
A[1] += 17; // 兑换成17张Sickle币
}
sickle = A[1] - P[1]; // 找零的Sickle币
galleon = A[0] - P[0]; // 找零的Galleon币
} public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split("\\s|\\."); // 分割成6部分
for (int i = 0; i < 3; ++i) {
P[i] = Integer.parseInt(str[i]); // 应付的钱
}
for (int i = 3; i < 6; ++i) {
A[i - 3] = Integer.parseInt(str[i]); // 实付的钱
}
if (A[0] > P[0]) { // Galleon币足够
change(P, A);
} else if (A[0] < P[0]) { // Galleon不够
enough = false;
change(A, P);
} else if (A[1] > P[1]) { // Galleon币刚好,Sickle币足够
change(P, A);
} else if (A[1] < P[1]) { // Galleon币刚好,Sickle币不够
enough = false;
change(A, P);
} else if (A[2] > P[2]) { // Galleon币和Sickle币刚好,Knut币足够
change(P, A);
} else if (A[2] < P[2]) { // Galleon币和Sickle币刚好,Knut币不够
enough = false;
change(A, P);
}
if (false == enough) {
System.out.print("-"); // 钱不够,输出负号
}
System.out.println(galleon + "." + sickle + "." + knut);
}
}

PAT(B) 1037 在霍格沃茨找零钱(Java)的更多相关文章

  1. PAT 乙级 1037 在霍格沃茨找零钱(20)C++版

    1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...

  2. PAT乙级-1037. 在霍格沃茨找零钱(20)

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.& ...

  3. PAT Basic 1037 在霍格沃茨找零钱 (20 分)

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...

  4. pat(B) 1037. 在霍格沃茨找零钱(水题)

    代码: #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> ...

  5. PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20)

    PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20) http://www.patest.cn/contests/pat-b-practise/1037 ...

  6. PAT 1037 在霍格沃茨找零钱(20)(代码+思路)

    1037 在霍格沃茨找零钱(20)(20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon) ...

  7. PAT-乙级-1037. 在霍格沃茨找零钱(20)

    1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...

  8. PAT——1037. 在霍格沃茨找零钱

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...

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

    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.& ...

随机推荐

  1. (一)Sql学习之sql语言的组成

    SQL语言是具有强大查询功能的数据库结构化语言.由以下几部分组成: 1.数据定义类SQL(DDL--DATE DEFINITION LANGUAGE) CREATE-创建数据库及其对象(表,索引,视图 ...

  2. No module named 'lsb_release'

    python3.7安装后提示 No module named 'lsb_release' 修改"/usr/bin/lsb_release" #!/usr/bin/python3.5 ...

  3. xhr.js:108 Refused to set unsafe header "Cookie"

    https://stackoverflow.com/questions/7210507/ajax-post-error-refused-to-set-unsafe-header-connection/ ...

  4. windows mysql绿色版配置Mysql5.7.X

    MySQL绿色版安装,很简单按照下面的方式很快就可以实现了. 1.下载地址 https://dev.mysql.com/downloads/mysql/ 百度网盘链接:https://pan.baid ...

  5. android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)

    Android开发项目时常常会遇到定位这个功能, 很久以前写过一篇了,官方也更新了一些东西,我也更新下 以前使用的是jar包 导入来实现高德定位 老版本 链接:https://www.cnblogs. ...

  6. flutter -------- 页面跳转和传值

    在安卓原生开发中,页面跳转可以用Intent类来具体实现: Intent intent =new Intent(MainActivity.this,second.class); startActivi ...

  7. XSS平台-学习

    单点登录 - Telnet 404https://sso.telnet404.com/cas/login?service=https%3A%2F%2Fwww.seebug.org%2Faccounts ...

  8. ubuntu下安装ftp服务

    1. 安装vsftpd $ sudo apt-get install vsftpd 2. 创建一个用户user-ftp用于ftp服务 $ sudo adduser user-ftp 3.创建一个文件/ ...

  9. centos下如何开放某个端口?

    命令如下: firewall-cmd --permanent --add-port=/tcp (开放22端口) firewall-cmd --reload

  10. shell编程系列2--字符串的处理

    shell编程系列2--字符串的处理 字符串的处理 .计算字符串的长度 方法1 ${#string} 方法2 expr length "$string" (如果string中间有空 ...