Вот код:
#include <stdio.h>
int main() {
int second = 2000000000;
int year = 1970;
while (second >= 31536000) { // Пока секунд хватает хотя бы на один обычный год
int days_in_year = 365;
// Проверяем, високосный ли год
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
days_in_year = 366; // Високосный год
}
int seconds_in_year = days_in_year * 24 * 60 * 60;
// Если секунд достаточно для ещё одного года, отнимаем их
if (second >= seconds_in_year) {
second -= seconds_in_year;
year++;
} else {
break;
}
}
printf("Year: %d\n", year);
return 0;
}
### Как это работает:
1. Начинаем с `1970` года.
2. В цикле проверяем, високосный ли текущий год (`366` дней) или обычный (`365` дней).
3. Вычитаем соответствующее количество секунд.
4. Повторяем, пока секунд не останется меньше, чем в одном полном году.
5. Выводим итоговый год.
### Проверка:
Для `2000000000` секунд результат:
Year: 2033
Этот способ проще, понятнее и работает точно. ?