[算法]黑色星期五

黑色星期五

题目概述

黑色星期五源于西方的宗教信仰与迷信: 耶稣基督死在星期五,而13是不吉利的数字.两者的结合令人相信当天会发生不幸的事情.星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天.所以,不管哪个月的13日又恰逢星期五就叫"黑色星期五".

输入格式:输入只有一行,即某个特定的年份(大于或等于1998年)。
输出格式:输出只有一行,即在这一年中,出现了多少次既是13号又是星期五的情形。

样例输入
1998
样例输出
3

算法思路

  • 日期的处理是一个困难的点
    • 使用Java的话不要自己重复造*,使用Calendar类来处理日期
  • 逻辑很简单 => 13号 && 星期五

代码示例

public class 黑色星期五 {

    // 判断是否为13号是否为星期五
    static boolean judge(Calendar cal) {
        return cal.get(Calendar.DAY_OF_WEEK) - 1 == 5;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();
        int cnt = 0;
        // 遍历每个月份的13号,进行判断是否为黑色星期五
        for (int mon = 1; mon <= 12; mon++) {
            Calendar cal = Calendar.getInstance();
            cal.set(year, mon - 1, 13); // 注意: Calender的 MONTH,DAY_OF_WEEK
            if (judge(cal))
                cnt++;
        }
        System.out.printf("%s年有%s次黑色星期五", year, cnt);
    }
}
上一篇:monitor 内存异常增长问题澄清


下一篇:A1070 Mooncake (25 分)