BASIC-26 报时助手
BASIC-26 报时助手
题目
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定当前的时间,请用英文的读法将它读出来。
时间用时 h 和分 m 表示,在英文的读法中,读一个时间的方法是:
如果 m 为 0,则将时读出来,然后加上“o'clock”,如 3:00 读作“three o'clock”。
如果 m 不为 0,则将时读出来,然后将分读出来,如 5:30 读作“five thirty”。
时和分的读法使用的是英文数字的读法,其中 0~20 读作:
0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。30 读作 thirty,40 读作 forty,50 读作 fifty。
对于大于 20 小于 60 的数字,首先读整十的数,然后再加上个位数。如 31 首先读 30 再加 1 的读法,读作“thirty one”。
按上面的规则 21:54 读作“twenty one fifty four”,9:07 读作“nine seven”,0:15 读作“zero fifteen”。
输入格式
输入包含两个非负整数 h 和 m,表示时间的时和分。非零的数字前没有前导 0。h 小于 24,m 小于 60。
输出格式
输出时间时刻的英文。
样例输入
0 15
样例输出
zero fifteen
题解
import java.util.Scanner;
import java.util.HashMap;
public class BASIC_26 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String h = scanner.next();
String m = scanner.next();
scanner.close();
HashMap<String, String> map = new HashMap<String, String>();
map.put("0", "zero");
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");
map.put("4", "four");
map.put("5", "five");
map.put("6", "six");
map.put("7", "seven");
map.put("8", "eight");
map.put("9", "nine");
map.put("10", "ten");
map.put("11", "eleven");
map.put("12", "twelve");
map.put("13", "thirteen");
map.put("14", "fourteen");
map.put("15", "fifteen");
map.put("16", "sixteen");
map.put("17", "seventeen");
map.put("18", "eighteen");
map.put("19", "nineteen");
map.put("20", "twenty");
map.put("30", "thirty");
map.put("40", "forty");
map.put("50", "fifty");
String value = m.equals("0") ? "o'clock" : form(m, map);
System.out.println(form(h, map) + " " + value);
}
public static String form(String n, HashMap<String, String> map) {
if (map.containsKey(n))
return map.get(n);
else
return map.get(n.charAt(0) + "0") + " " + map.get("" + n.charAt(1));
}
}