Длинногод всегда страшен?
По стандарту ISO "длинный" год (53 недели) описывается такими эквивалентыми между собой правилами:
- любой год, начинающийся в четверг и любой високосный год, начинающийся в среду;
- любой год, заканчивающийся в четверг, и любой високосный год, заканчивающийся в пятницу;
- годы, в которые 1 января или 31 декабря являются четвергами.
Все остальные годы нумерации недель являются короткими и имеют 52 недели.
Вот все длинногоды с 1800-го по 2100-й, не правда ли, что-то есть?
длинные годы с 1800 по 2100
Консольная программка на C++ для подсчёта (проверена в Visual Studio 2019):
#include <iostream> using namespace std; inline int p (int year) { return (year + (year / 4) - (year / 100) + (year / 400)) % 7; } bool is_long_year (int year) { return p(year) == 4 || p(year - 1) == 3; } void print_long_years(int from, int to) { for (int year = from, count = 0; year <= to; ++year) { if (is_long_year(year)) { if (count > 0) cout << ((count % 10 == 0) ? '\n' : ' '); cout << year; count++; } } } int main() { cout << "Long years between 1800 and 2100:" << '\n'; print_long_years(1800, 2100); cout << '\n'; cin.get(); return 0; }
09.05.2020, 12:44 [1317 просмотров]