SameCalendarYears <- function(y, n)
{
Y <- y + sign(n) * 1:400
d <- 365 + (Y %% 4 == 0 & Y %% 100 != 0 | Y %% 400 == 0)
s <- cumsum(d) %% 7
Y <- Y[s == s[400] & d == d[400]]
rep
(Y
, length.
out = abs(n
)) + sign
(n
) * 0:(abs(n
) - 1) %/% length
(Y
) * 400}
y <- c(2023, 2023, 2024, 1898)
n <- c(100, -100, -12, 15)
for (i in seq(y)) {
cat
(sprintf("[%d年より%sで同じカレンダーになる年%d個]\n", y
[i
], ifelse
(n
[i
] < 0, "前", "後"), abs(n
[i
]))) cat(SameCalendarYears(y[i], n[i]), fill = 50); cat("\n")
}
U2FtZUNhbGVuZGFyWWVhcnMgPC0gZnVuY3Rpb24oeSwgbikKewogICAgWSA8LSB5ICsgc2lnbihuKSAqIDE6NDAwCiAgICBkIDwtIDM2NSArIChZICUlIDQgPT0gMCAmIFkgJSUgMTAwICE9IDAgfCBZICUlIDQwMCA9PSAwKQogICAgcyA8LSBjdW1zdW0oZCkgJSUgNwogICAgWSA8LSBZW3MgPT0gc1s0MDBdICYgZCA9PSBkWzQwMF1dCiAgICByZXAoWSwgbGVuZ3RoLm91dCA9IGFicyhuKSkgKyBzaWduKG4pICogMDooYWJzKG4pIC0gMSkgJS8lIGxlbmd0aChZKSAqIDQwMAp9Cgp5IDwtIGMoMjAyMywgMjAyMywgMjAyNCwgMTg5OCkKbiA8LSBjKDEwMCwgLTEwMCwgLTEyLCAxNSkKCmZvciAoaSBpbiBzZXEoeSkpIHsKICAgIGNhdChzcHJpbnRmKCJbJWTlubTjgojjgoolc+OBp+WQjOOBmOOCq+ODrOODs+ODgOODvOOBq+OBquOCi+W5tCVk5YCLXVxuIiwgeVtpXSwgaWZlbHNlKG5baV0gPCAwLCAi5YmNIiwgIuW+jCIpLCBhYnMobltpXSkpKQogICAgY2F0KFNhbWVDYWxlbmRhclllYXJzKHlbaV0sIG5baV0pLCBmaWxsID0gNTApOyBjYXQoIlxuIikKfQ==