Задача про количество дней по номеру месяца
Считать количество дней месяца по костяшкам пальцев умеют все (или раньше умели все).
А есть ли способ узнать формулой количество дней в месяце по его номеру от 1 до 12 включительно?
То есть, не использовать массивы, которые в данном случае, может, и быстрее будут работать, а именно аналитически подсчитать?
Количество дней в феврале, для простоты, можно принять всегда равным 28.
Способов, как минимум, два, вот они оба в консоли C++:
#include <iostream> using namespace std; int numberofDaysByMonth (int m) { return 28 + (m + m/8) % 2 + 2 % m + 1 / m * 2; } int main() { for (int month = 1; month<13; month++) { cout << numberofDaysByMonth (month) << " "; } cin.get(); return 0; }
И, неожиданно, можно с ещё меньшим количеством операций, если применить немного побитовой магии:
#include <iostream> using namespace std; int main() { for (int month = 1; month<13; month++) { int i = 0x1C + ((0x03BBEECC >> (2 * month)) & 0x3); cout << i << " "; } cin.get(); return 0; }
30.05.2018, 12:36 [2677 просмотров]