fork download
  1. SameCalendarYears <- function(y, n)
  2. {
  3. Y <- y + sign(n) * 1:400
  4. d <- 365 + (Y %% 4 == 0 & Y %% 100 != 0 | Y %% 400 == 0)
  5. s <- cumsum(d) %% 7
  6. Y <- Y[s == s[400] & d == d[400]]
  7. rep(Y, length.out = abs(n)) + sign(n) * 0:(abs(n) - 1) %/% length(Y) * 400
  8. }
  9.  
  10. y <- c(2023, 2023, 2024, 1898)
  11. n <- c(100, -100, -12, 15)
  12.  
  13. for (i in seq(y)) {
  14. cat(sprintf("[%d年より%sで同じカレンダーになる年%d個]\n", y[i], ifelse(n[i] < 0, "前", "後"), abs(n[i])))
  15. cat(SameCalendarYears(y[i], n[i]), fill = 50); cat("\n")
  16. }
Success #stdin #stdout 0.25s 39732KB
stdin
Standard input is empty
stdout
[2023年より後で同じカレンダーになる年100個]
2034 2045 2051 2062 2073 2079 2090 2102 2113 2119 
2130 2141 2147 2158 2169 2175 2186 2197 2209 2215 
2226 2237 2243 2254 2265 2271 2282 2293 2299 2305 
2311 2322 2333 2339 2350 2361 2367 2378 2389 2395 
2406 2417 2423 2434 2445 2451 2462 2473 2479 2490 
2502 2513 2519 2530 2541 2547 2558 2569 2575 2586 
2597 2609 2615 2626 2637 2643 2654 2665 2671 2682 
2693 2699 2705 2711 2722 2733 2739 2750 2761 2767 
2778 2789 2795 2806 2817 2823 2834 2845 2851 2862 
2873 2879 2890 2902 2913 2919 2930 2941 2947 2958

[2023年より前で同じカレンダーになる年100個]
2017 2006 1995 1989 1978 1967 1961 1950 1939 1933 
1922 1911 1905 1899 1893 1882 1871 1865 1854 1843 
1837 1826 1815 1809 1797 1786 1775 1769 1758 1747 
1741 1730 1719 1713 1702 1690 1679 1673 1662 1651 
1645 1634 1623 1617 1606 1595 1589 1578 1567 1561 
1550 1539 1533 1522 1511 1505 1499 1493 1482 1471 
1465 1454 1443 1437 1426 1415 1409 1397 1386 1375 
1369 1358 1347 1341 1330 1319 1313 1302 1290 1279 
1273 1262 1251 1245 1234 1223 1217 1206 1195 1189 
1178 1167 1161 1150 1139 1133 1122 1111 1105 1099

[2024年より前で同じカレンダーになる年12個]
1996 1968 1940 1912 1872 1844 1816 1776 1748 1720 
1680 1652

[1898年より後で同じカレンダーになる年15個]
1910 1921 1927 1938 1949 1955 1966 1977 1983 1994 
2005 2011 2022 2033 2039