fork download
  1. import java.util.HashSet;
  2. import java.util.Arrays;
  3. import java.util.List;
  4.  
  5. class MyClass {
  6.  
  7. public static void main(String[] args) {
  8. List<Integer> leapYears = Arrays.asList(1804, 1808, 1812, 1816, 1820, 1824, 1828, 1832, 1836, 1840, 1844, 1848, 1852, 1856, 1860, 1864, 1868, 1872, 1876, 1880, 1884, 1888, 1892, 1896, 1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096, 2104, 2108, 2112, 2116, 2120, 2124, 2128, 2132, 2136, 2140, 2144, 2148, 2152, 2156, 2160, 2164, 2168, 2172, 2176, 2180, 2184, 2188, 2192, 2196, 2204, 2208, 2212, 2216, 2220, 2224, 2228, 2232, 2236, 2240, 2244, 2248, 2252, 2256, 2260, 2264, 2268, 2272, 2276, 2280, 2284, 2288, 2292, 2296, 2304, 2308, 2312, 2316, 2320, 2324, 2328, 2332, 2336, 2340, 2344, 2348, 2352, 2356, 2360, 2364, 2368, 2372, 2376, 2380, 2384, 2388, 2392, 2396, 2400);
  9. for(Integer year = 1804; year < 2400; year++) {
  10. for(Integer month : Arrays.asList(1,3,5,7,8,10,12)) {
  11. assert daysInMonth(month, year) == 31;
  12. }
  13. for(Integer month : Arrays.asList(4,6,9,11)) {
  14. assert daysInMonth(month, year) == 30;
  15. }
  16. if(leapYears.contains(year)) {
  17. assert daysInMonth(2, year) == 29;
  18. }
  19. else {
  20. assert daysInMonth(2, year) == 28;
  21. }
  22. }
  23. }
  24.  
  25. public static int daysInMonth(int m, int y) {
  26. HashSet<Integer> monthsWith31Days = new HashSet<Integer>(Arrays.asList(1,3,5,7,8,10,12));
  27. HashSet<Integer> monthsWith30Days = new HashSet<Integer>(Arrays.asList(4,6,9,11));
  28.  
  29. if(monthsWith31Days.contains(m)) {
  30. return 31;
  31. } else if(monthsWith30Days.contains(m)) {
  32. return 30;
  33. }
  34. else if(isLeapYear(y)) {
  35. return 29;
  36. }
  37. else {
  38. return 28;
  39. }
  40. }
  41.  
  42. public static boolean isLeapYear(int year) {
  43. if (year % 4 != 0) {
  44. return false;
  45. } else if (year % 400 == 0) {
  46. return true;
  47. } else if (year % 100 == 0) {
  48. return false;
  49. } else {
  50. return true;
  51. }
  52. }
  53. }
  54.  
Success #stdin #stdout 0.08s 380160KB
stdin
Standard input is empty
stdout
Standard output is empty