結果
| 問題 | No.87 Advent Calendar Problem | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2015-11-22 17:40:22 | 
| 言語 | Java (openjdk 23) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 136 ms / 5,000 ms | 
| コード長 | 1,140 bytes | 
| コンパイル時間 | 3,467 ms | 
| コンパイル使用メモリ | 77,380 KB | 
| 実行使用メモリ | 54,300 KB | 
| 最終ジャッジ日時 | 2024-09-13 17:11:21 | 
| 合計ジャッジ時間 | 8,142 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 24 | 
ソースコード
import java.util.Scanner;
public class Main_yukicoder87 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int ret = 0;
        long tmp = 0;
        for (long i = 2015; i <= Math.min(2400, n); i++) {
        	if ((i % 4 == 0 && i % 100 != 0) || (i % 4 == 0 && i % 400 == 0)) {
        		tmp += 2;
        	} else {
        		tmp += 1;
        	}
        	if (tmp % 7 == 0) {
        		ret++;
        	}
        }
        if (n > 2400) {
        	int[] wed = new int[400 + 1];
        	for (long i = 2401; i <= 2800; i++) {
            	if ((i % 4 == 0 && i % 100 != 0) || (i % 4 == 0 && i % 400 == 0)) {
            		tmp += 2;
            	} else {
            		tmp += 1;
            	}
            	if (tmp % 7 == 0) {
            		wed[(int)(i - 2400)] = wed[(int)(i - 1 - 2400)] + 1;
            	} else {
            		wed[(int)(i - 2400)] = wed[(int)(i - 1 - 2400)];
            	}
        	}
        	ret += (n - 2400) / 400 * wed[400] + wed[(int)((n - 2400) % 400)];
        }
        System.out.println(ret);
        sc.close();
    }
}
            
            
            
        