Цифровой 2018 - часть 2.

Previous Entry Поделиться Next Entry
11 декабря, 2017
e_kaspersky
Новая порция математических задачек под постепенно надвигающийся 2018-й.

Вот такая: про ромашку и закрашивание лепестков.

Однажды русские госхакеры решили поздравить друг друга с Новым Годом и нарисовали огромную такую ромашку с 2018 лепестками. Этакая окружность, на которой нарисованы лепестки. Для пущей красоты они решили закрасить лепестки ромашки. А поскольку они всё-таки программисты, то сделали они это необычным способом. Сначала был покрашен некий произвольный лепесток. Затем хакеры отступили от него на один лепесток по часовой стрелке и закрасили и его тоже. Затем отступили в том же направлении на два лепестка от только что покрашенного (то есть, пропустили один лепесток), потом отступили на три, четыре, пять - и так до бесконечности. То есть, на каждом шаге количество пропущенных лепестков увеличивается на один. Если первым был закрашен нулевой лепесток, то следующий будет номер 1, затем +2 = 3, +3 = 6, +4 = 10, +5 = 15 и так далее по кругу и в бесконечном цикле.

Внимание, вопрос1: какое количество лепестков будет в результате закрашено?

Увидев такие дела, американские госхакеры тоже решили нарисовать свою ромашку. Но поскольку бюджеты у них побогаче будут, то и ромашка получилась поразвесистей. И было закрашено в ней по той же схеме ровно 2018 лепестков.

Вопрос2: сколько лепестков было в американской госхакерской ромашке?

Вопрос3: единственное ли это решение? Хотя еврейский Новый Год и отмечается в совершенно другое время, но израильские госхакеры решили не отставать от своих коллег и тоже нарисовали ромашку, у которой тоже закрашивается ровно 2018 лепестков. Но она отличается от американской. Возможно ли такое?

Поскольку предыдущие задачки про 2018 как-то не вызвали энтузиазма у читающей публики, попробую промотивировать ваши извилины ценными призами первым ответившим правильно и с обоснованиями. А призов у нас много и всяких разных.

Удачи.
Метки:
Previous Entry Поделиться Next Entry

Записи из этого журнала по тегу «chtogdekogda»

  • Необычная деталь.

    Давече жаловались, что здесь слишком простые задачки формата "on the road again" задаются. Буду усложнять задачки. Вопрос: какую необычную…

  • Сельско-баварская пастораль.

    Что-то укатали Сивку крутые горки с поворотами. Я вчера в ночи чуть лицом на клавиатуру не упал :) А в 7 утра следующий самолёт. Ага, как мне больше…

  • Пыль древностей и развалины крестоносцев.

    Вы когда-нибудь бывали в настоящей крепости, построенной самыми настоящими, теми самыми крестоносцами? Я много что видел, а где бывал - уже не…


Страница 1 из 2
<<[1] [2] >>
программисты не программисты, а израильтяне и амеры могут просто сделать подгон под определенные даты ... с них станется..

мои ответы:
1) 64 (объяснение https://yadi.sk/i/w9Cu_OWk3QWHE5 )
2) 2035153 (объяснение https://yadi.sk/i/-COnxEED3QWHRW )

p.s. предыдущие не вызывали энтузиазма, потому как в "уме не решаются" (т.е. не для всех, даже если есть свободное время) )))
и дело тут вовсе не в мотивации, хотя спасибо

Читайте внимательно:
"и так далее по кругу и в бесконечном цикле".

Ваш цикл конечен.
То есть, потребуется математическое обоснование. Вы же не будете считать этот круг до бесконечного значения? Это потребует бесконечного машинного времени...

64
2035154
по третьему вопросу: формулировка самого вопроса такова, что можно допустить, что израильские коллеги тупо раскрасили все лепестки ромашки с 2018 лепестками ) ибо крайне рациональны и экономны

Читайте внимательно:
"и так далее по кругу и в бесконечном цикле".

3) Израиль создал мутанта ромашку с двумя бутонами смотрящими в разные стороны с сопоставимым количеством лепестков

Израиль создал или шестиугольную ромашку или ромашку с семью бутонами.
Монополия на всех двухголовых мутантов у России.

Заранее извиняюсь, что не досчитал. Осталось вспомнить программирование:)

Логика по первой задаче:
1. Через любое количество циклов, кратное 2018, закрашивание начнет работать как с первого цикла (номера от того текущего, в котором будет алгоритм. плюс 1,3,6,10,15...), потому что можно будет вычитать все, что кратно 2018, т.к. движение идет по кругу.
2. Смотрим в какой номер приведет закрашивание на 2018 цикле: 2018*(2018+1)/2=2037171, это 1009 полных кругов, получается номер 1009, т.е. ровно противоположная от начала алгоритма точка.
3. Значит еще через 2018 циклов алгоритм приведет в начальную точку и далее пойдет все делать повторно.
4. Итого достаточно посчитать, сколько будет закрашено лепестков за 4036 циклов, что и будет ответом на п.1.

Более того, получается, что для нечетного количества лепестков, алгоритм начнет повторяться со второго же повторения (повторение - n циклов закрашивания, где n - количество лепестков), т.к. количество кругов, пройденных алгоритмом не что иное, как (n+1)/2.
А для четного - только с третьего повторения, причем всегда.
Т.е. если число лепестков четное, то нужно 2n циклов закрашивания, а если нечетное - то n.

Дальше либо машинным методом, либо нужно вывести связь между количеством закрашенных и количеством лепестков итого (что, походу, невозможно). Оттуда будут точные ответы на вопросы 1 и 2.

Для точного ответа на вопрос 3 достаточно будет прогнать в алгоритме ромашку +-2 лепестка от американской, чтобы показать, что там закрашиваются 2018, меньше или больше лепестков соответственно. Ой, нет, там же еще могут быть ромашки в разы больше или в разы меньше, для которых закрашивание пройдет за одно или два повторение, а не за два или одно (в зависимости от четности американской ромашки)...Их тоже нужно прогнать возле 2018 закрашиваний, и тогда точно будет ответ.

Upd.
Алгоритм для определения количества закрашенных лепестков:
1. Обозначаем массив из 2018 (n) элементов, все равны 0
2. Запускаем цикл на 4036 (2*n) раз, в котором движемся по алгоритму закрашивания и присваиваем закрашенным номерам лепестков (элементам массива) значения 1.
3. На каждом шагу i определяем номер лепестка как: i*(i+1)/2-n*целаячасть(i*(i+1)/(2*n))
4. Считаем сумму элементов массива - это и есть ответ на первый вопрос. Пусть это будет m.

Для ответа на второй вопрос создаем дополнительный массив в который пишем по 2 значения: количество лепестков n и соответствующее количество закрашенных лепестков m. Запускаем алгоритм по n от 0 и до момента пока m не будет равно 2018. (для нечетных n крутим алгоритм не 2n, а n раз).

Для ответа на третий вопрос запускаем алгоритм 2 дальше, пока m для нечетных n не превысит 2018 и делаем выводы глядя в две окрестности m=2018.


Edited at 2017-12-11 15:04 (UTC)

> Запускаем алгоритм по n от 0 и до момента пока m не будет равно 2018. (для нечетных n крутим алгоритм не 2n, а n раз).

А кто сказал, что у этой задачи конечное число решений?
Пока незачёт...

А нельзя ли убрать перделки и свистелки и сделать антивирусник нормальным?

Edited at 2017-12-11 16:48 (UTC)

конечно, нельзя. что вы, как маленький.

https://youtu.be/HRrzFQM0zI8

Откуда вы знаете какие ромашки рисуют и закрашивают госхакеры? Никада Штирлиц не был так близок к провалу.

проще, как обычно, оформить продление нужного продукта

спасибо. когда?

cepb

2017-12-11 19:35 (UTC)

скажите, а у вас ведь достаточно специалистов высокого уровня, чтобы
они наконец, смогли разработать совершенно новую, надежную и
не такую геморройную систему аутентификации, чтобы не хранить/не запоминать
туеву хучу логинов/паролей к ресурсам?

1. Все лепестки, потому что если циклов бесконечное колличество, а при закрашивании учитываются только «пустые», то рано или поздно закрасятся все 2018 или любое колличество, сколько есть
2. 2018
3. При соблюдении всех тех же условий решение одно,но в Израиле не стали бы тратить ресурсы и сразу всё покрасили)))

1. > при закрашивании учитываются только «пустые»

Это где сказано??
Неа, учитываются все вообще.

2.3. Нет, не так.

Обоснуйте.
Почему и откуда такие цифры.

// ааа ... или вы там уже всё сразу знали/отгадали?

Edited at 2017-12-11 22:34 (UTC)

1. 1010
2. 4034
3. 6051
Конечно, можно было всё обосновать. Знаний математики достаточно. Но проще было просто составить программку, которая выдала те же результаты, что и у предыдущего товарища.

Edited at 2017-12-11 21:38 (UTC)

Ну так и обоснуйте, откуда такие странный цифр образовался.

Я не хотел думать и просто закодил, после чего обнаружил, что после 1010 номер не растет:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    int i, j, n = 2018, w;
    unsigned long long m = 2000000000ULL;

    char * a = (char *) malloc (n + 1);

    for (i = 0; i < n; i ++)
        a [i] = '.';

    a [i] = '\0';

    for (i = 0, j = 0;
         m > 0;
         i = (i + ++ j) % n, m --)
    {
        a [i] = '*';
    }

    puts (a);

    for (i = 0, w = 0; i < n; i ++)
        if (a [i] == '*')
            w ++;

    printf ("%d\n", w);

    free (a);

    return 0;
}



Edited at 2017-12-11 21:47 (UTC)

Ну вот...
Все такие программисты, все сразу за компиляторы бросились. А что, если я бы вдруг эту задачку для другого числа задал, например, 68719476704 - что станете делать? (на самом деле решение именно для этого числа всего-то чуть сложнее, чем для 2018).

Страница 1 из 2
<<[1] [2] >>
?

Log in

No account? Create an account