PAT(B) 1037 在霍格沃茨找零钱(Java)
题目链接:1037 在霍格沃茨找零钱 (20 point(s))
题目描述
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(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
输入样例 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)的更多相关文章
- PAT 乙级 1037 在霍格沃茨找零钱(20)C++版
1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...
- PAT乙级-1037. 在霍格沃茨找零钱(20)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.& ...
- PAT Basic 1037 在霍格沃茨找零钱 (20 分)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...
- pat(B) 1037. 在霍格沃茨找零钱(水题)
代码: #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> ...
- PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20)
PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20) http://www.patest.cn/contests/pat-b-practise/1037 ...
- PAT 1037 在霍格沃茨找零钱(20)(代码+思路)
1037 在霍格沃茨找零钱(20)(20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon) ...
- PAT-乙级-1037. 在霍格沃茨找零钱(20)
1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...
- PAT——1037. 在霍格沃茨找零钱
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.”现在,给定 ...
- PAT 1037. 在霍格沃茨找零钱(20)
如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易.& ...
随机推荐
- Git的使用(1) —— 版本库
1. 简介 Git作为一个分布式版本控制系统,其优点是不需要一直连接远端版本库就可以使用. 故其为实现分布版本控制专门设计了一整套的存储区间和语句,用来实现. (1) 本地版本库:建立在本机磁盘上的文 ...
- Vue基础学习 --- 遍历数组
<body> <div id="app"> <ul> <!-- 遍历数组 --> <li v-for="user i ...
- Java 泛型 (Generics)
泛型:就是变量类型的参数化 泛型是JDK1.5中的一个最重要的特征.通过引入泛型,我们将获得编译时类型的安全和运行时更小的抛出ClassCastException的可能. public class A ...
- CMU Database Systems - Embedded Database Logic
正常应用和数据库交互的过程是这样的, 其实我们也可以把部分应用逻辑放到DB端去执行,来提升效率 User-defined Function Stored Procedures Triggers Cha ...
- idea断点调试学习随笔
1,rerun XXX,这个就是直接重新跑某个程序.2,这个相当于eclipse里面的f8,直接跑完,到下一个断点停下,没有就直接跑完程序.3,停止项目或者程序.要是自己的main呢,点一下就停下了, ...
- 多个请求共用一个Servlet(JavaWEB)
我们在对JavaWEB工程进行开发的时候,我们经常会遇到这样一个问题,在jsp中发送到Servlet的每一个请求都要写一个对应的Servlet,这样会造成一个工程完成下来需要写几十个Servlet,那 ...
- C++操作Mysql数据库/Linux下
本文链接:https://blog.csdn.net/Tanswer_/article/details/72796570想用C++写项目,数据库是必须的,所以这两天学了一下C++操作Mysql数据库的 ...
- 深入学习c++--容器
1. 简介 1. 序列式容器: array, vector, deque, list, forward_list --- 数组 或者 指针实现 2. 关联容器: set, map, multiset, ...
- properties配置文件参数获取
package com.opslab.util; import org.apache.log4j.Logger; import java.io.File;import java.io.IOExcept ...
- response.getWriter().write的用法
/** * 获取手机验证码的方法 */ var loopObjBindMobil = null; var secondsBindMobil = 0; function hqBindYzm(moblie ...