Неясно, что конкретно вам надо. Почему нельзя просто перезаписать hello-world файлом evil-hello-wolrd? Что значит "склеить"? Вам надо, чтобы итоговый файл какую программу выполнял? Вам надо какие-то дополнительные условия, вроде неизменения размера файла? Или возможность откатить его назад к hello-world?
Каждый сектор должен быть равен сектору +i. Если идти по секторам с шагом +i, то рано или подзно мы вернемся туда, откуда начали - это и есть цикл.
Его длина (в секторах) делится на i, потому что мы по i секторов скачем. И к тому же она делится на 42, ведь мы прошли сколько-то полных кругов, чтобы вернуться в начало. Итого, эта длина НОК(i, 42). Но это длина в секторах, считая пропущенные i-1. Всего цикл посетит НОК(i, 42)/i секторов. А, поскольку все циклы одинаковые, то их всего 42/длина-цикла-в-посещенных-секторах, т.е. 42*i/НОК(i,42). И это получится GCD(i, 42).
Иван Мельников, Обычно, да. Как раз потому что, если вам нужно что-то другое, вы его сами посчитаете из равномерного распределения. Поэтому обычно его и генерируют.
По той же причине, почему во многих кодовых базах на Си запрещают goto использовать. Я об этом в ответе же написал - с goto можно легко написать очень непонятный код.
Вы или скопировали или поняли условие криво. Передача от компьютера 1 кому передается? В token ring за сумму всех времен токен пройдет по кругу. При этом токен будет переносить сообщение с первого компьютера, пока оно не дойдет до получателя. Потом пустой токен дойдет до первого компьютера и тот передаст его дальше по кругу. Тут уже другие комьпютеры могут начать передачу данных. Когда токен дойдет назад до первого компьютера он сожет отправить следующее сообщение.
Так что надо знать кто получатель и сколько фреймов занимают отправляемые данные.
jidomasson, а как вы эту функцию вызываете-то? И давайте код arrRandom.
Я бы функцию min_element переписал - вместо рекурсии просто бы циклом while прошелся. И вообще бы поменял у нее аргументы на те же, что и у arrRandom - указатель и размер.
MishaXXL, Потому что вам надо максимизировать min(h[i],h[j])*(j-i). Вот в currentArea вы и берете этот min из двух столбцов. А в maxArea берете максимум из значений, которые и надо максимизировать.
Корень, Что за противоположные знаки? Это генетический алгоритм, справшивайте у mayton2019.
Пока похоже, что функция скрещивания только берет a, b и c из одного или другого экземпляра. Если в изначально сгенерированном не будую содержаться ответы, что правктически невозможно, то ничего и не найдется никогда.
Евгений Мартынов, Адрес у вас скорее всего 64-битный в системе. Замените int addr на size_t.
И при выводе преобразуйте к size_t: std::cout << (size_t)&a, а то адреса выводятся в 16-ричном виде, а читает он чиста в 10-ричной системе.
Это можно еще доказать: Вот искомый индекс, цифра в нем появилась на каком-то шаге. Длина последовательности каждый раз увеличивается вдвое. Вот на этом шаге можно вместо значения по искомому индексу, взять значение по тому индексу, откуда значение было скопировано в искомый индекс, и инвертировать. Если на этом шаге длина последовательности была 2^k, а искомый индекс x, то надо взять значение по индексу x-2^k. При этом получается 2^k <= x < 2^(k+1), раз на этом шаге x был заполнен. Значит надо вычесть из x самый старший значащий двоичный разряд и инвертировать значение там. Значит количество инверсий будет равно количеству значащих бит. Вот и получается, что надо взять четность количества единиц в двоичной записи.
jidomasson, Да, но вы должны помнить, что О-большое - это ассимптотическая оценка. Она действует только на больших числах. Допустим, там, на самом деле 5n log n + 100sqrt(n) операций. Это все еще O(n log n). Однако, если вы n с 10 до 20 увеличите, то у вас время вырастет чуть более, чем в 1.414 раз, потому что 100sqrt(n) сильно больше 5n log n. Однако на больших n скорость роста будет задаваться именно n log n.
Поэтому чтобы действительно намерить ассимптотическую сложность - надо брать большие n.