ElemenT马上就要毕业了,他打开日历看了看时间。发现日历上的日期都是2017-04-04这样的格式的,月和日如果不足2位数,前面都会补充0。
给定一个年份和月份,ElemenT把那个月的日期都按上述格式写到纸上,他现在想知道某种数字出现了多少次。
多组输入 每组输入一行,有3个数字y,m,x(1000<=y<=3000,1<=m<=12,0<=x<=9),分别代表年份,月份,和他想知道哪个数字出现的次数。
每组输出一个整数,表示数字x在这个月的日期里出现了多少次。
2017 4 4 2000 1 0
33 136
第一组样例中,日中有数字4的为2017-04-04,2017-04-14,2017-04-24,4月一共有30天,因为月份中有4,所以数字4一共出现了30 + 3 = 33次
import java.util.Calendar; import java.util.Scanner; public class Main { public static void main(String[] args) { //处理输入 Scanner sc = new Scanner(System.in); while (true) { String oneLine = sc.nextLine(); if (oneLine.equals("")) { return; } String[] dateStringArray = oneLine.split(" "); int year = Integer.parseInt(dateStringArray[0]); int month = Integer.parseInt(dateStringArray[1]); char targetChar = (char) ('0' + Integer.parseInt(dateStringArray[2])); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month, 1); //比如4月,这里就得到了4月的最后一天。再得到本月的天数 calendar.add(Calendar.DATE, -1); //得到本月的天数 int dayCount = calendar.get(Calendar.DAY_OF_MONTH); //统计年份的含量 int resYear = 0; String yearString = "" + year; for (int i = 0; i < yearString.length(); i++) { if (yearString.charAt(i) == targetChar) { resYear++; } } resYear = resYear * dayCount; //统计月份的含量 int resMonth = 0; String monthString = ""; if (month < 10) { monthString = "0" + month; } else { monthString = monthString + month; } for (int i = 0; i < monthString.length(); i++) { if (monthString.charAt(i) == targetChar) { resMonth++; } } resMonth = resMonth * dayCount; //统计天数的含量 int resDay = 0; String dayString = ""; for (int i = 1; i < dayCount; i++) { //如果当前日期是小于10的,需要在前面拼接一个0 if (i < 10) { dayString = "0" + i; } else { dayString = "" + i; } for (int j = 0; j < dayString.length(); j++) { if (dayString.charAt(j) == targetChar) { resDay++; } } } //结果是三者的和 int res = resYear + resMonth + resDay; System.out.println(res); } } }