English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Дан положительное целое значение n, задача - сгенерировать количество нечётных дней до заданного года n.
Input-: дни = 500 Output-: количество нечётных дней: 5 Input-: дни = 400 Output-: количество нечётных дней: 0
При вычислении нечётных дней首先要检查, является ли заданный год високосным, так как в этом случае нечётные дни изменятся. Если год деляется на 100 или 400, но не на 4, то этот год будет високосным, в противном случае он будет обычным годом. Если мы используем 7 для вычисления модуля总数 дней, то это количество дней в неделе. Таким образом, обычные годы включают 1 нечётный день, а високосные годы включают 2 нечётных дня.
Мы используем следующий метод в заданной программе-
Ввести количество дней в качестве ввода
Проверьте, является ли год a високосным или обычным
Число нечётных дней рассчитывается, деля总数 дней на модуль
Показать конечный результат как количество дней от 1 до n в году
Start Шаг 1-> Объявить функцию для вычисления количества нечетных дней в данном году int cal_odd(int days) declare int cal_1 = days / 100 declare int cal_2 = days / 400 declare int check_leap = days >> 2 declare int temp = days - check_leap IF (cal_1) set temp += cal_1 Set check_leap -= cal_1 End IF (cal_2) Set temp -= cal_2 Set check_leap += cal_2 End declare int final_days = temp + check_leap * 2 Объявить int odd = final_days % 7 return odd шаг 2->В main() Объявить int days = 500 call cal_odd(days) Stop
#include <iostream> using namespace std; // Рассчитать количество нечетных дней в данном году int cal_odd(int days) { int cal_1 = days / 100; int cal_2 = days / 400; int check_leap = days >> 2; int temp = days - check_leap; if (cal_1) { temp += cal_1; check_leap -= cal_1; } if (cal_2) { temp -= cal_2; check_leap += cal_2; } int final_days = temp + check_leap * 2; int odd = final_days % 7; return odd; } int main() { int days = 500; cout << "Нечетные дни: " << cal_odd(days); return 0; }
Результат вывода
Нечетные дни: 5