О Доктор Веб, ты мой герой
Все вирусы ты вряд построй
И выгони всех четко вон
Чтоб не мешали шпилить в WOW
<u>PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
begin
Range(41,160,2).Aggregate(BigInteger(1),(i,j)->i*j).Println;
Range(1500,3000).Where(t->t mod 150=0).Sum.Println;
Range(2500,7000).Where(t->t mod 17=0).Count.Println
end.
Незнаю даже. чем тебе помоч.............
<h2>Алгоритм решения</h2>
Почти никакой математики - проходим по всем дням в году, начиная с первого дня, проверяем условия, обновляем ответ.
<h3>Детали</h3>
Для удобства заведем константный массив чисел - количество дней в каждом месяце. С его помощью мы будет перескакивать из последнего дня одного месяца в первый день следующего.
<em>Нам </em><em>не нужно </em><em>переходить из декабря в январь!</em>
Также заведем массив строк, хранящий названия каждого месяца.
Будем поддерживать номер текущего дня, номер текущего месяца и каким днем недели является текущий день. Текущий день и день недели у нас нумеруются с единицы, месяц - с нуля.
Пока мы не прошли весь декабрь, проверяем условия. Первый вариант: dayInWeek == суббота, day == 5 или day == 6. Второй вариант: dayInWeek == четверг, day % n == 0.
Пытаемся перейти на следующий день. Если следующий день начнется уже в следующем месяце, увеличим месяц, день сбросим до единицы. Ну и обновим день в неделе: dayInWeek = dayInWeek % 7 + 1.
1024байта - 1024*8=8192 бит
1024 кбайта - 8192000 бит
1024 гбайта - 8192000000000 бит