Да, я пробовал и это тоже.
Скачал что-то порядка 22гб, но потом на оффлайн машине при установке оно не смогло установиться.
После подключения интернета, установщик потратил меньше мегабайта, но смог-таки все сделать.
В вычислительной технике работа с рациональными числами невозможна, потому что они представлены с определенной точностью и однозначно восстановить секрет не представляется возможным.
Лукавите где-то. Любое рациональное число можно представить в виде дроби a/b, где a — целое, b — натуральное. Взяв длинную арифметику для этих чисел получим произвольную точность.
Знакомый недавно пошел на этот самый курс и вскоре попросил помощи. Дескать задача совсем простая, но он не понимает что не работает.
Суть задачи — даются два вещественных числа и нужно написать равны ли они, а если не равны, то их разницу.
Показывает свое решение — код прошел 10 тестов из 31. Смотрю на код — вроде все верно. Если равны, то сообщение; если одно число больше, то вычитаем из большего меньшее.
В логике ошибок не вижу. Говорит, что причины ошибок указаны такие:
Вы не считаете размер половинок вещественным числом
Вы неправильно обрабатываете случай, когда первая часть больше
Вы неправильно обрабатываете случай, когда первая часть меньше
В результате оказалось, что товарищ в коде делал:
cout << to_string(a-b); // выведет, например «0.900000»
А надо было:
cout << a-b; // выведет, «0.9».
Говорит, что вроде в лекциях упоминали или использовали именно to_string. Про точность в ответе в задаче я не увидел.
Учитывая, что ситуация один-в-один гуглится прям сразу, то выглядит это не хорошо. Особенно для одной из первых задач.
За исключением этого момента курс хвалил, но опять же занимается еще не долго, посмотрим, что скажет в конце.
На основании u^v=1 строится два множества, отличающиеся тем самым битом. В одном: числа 1,3 и 5, в другом: 2 и 4 (кроме пропущенных). Причем, не умаляя общности, можно считать, что среди 1, 3 и 5 отсутствует u, а среди 2 и 4 отсутствует v.
Задача, фактически, сведена к предыдущей — есть множество известных элементов, из которого один отсутствует. Снова xor'им, чтобы найти u (или v), далее оставшееся.
К сожалению, ваш пример нерелевантен. Товарищ qw1 правильно говорит, что обычно dll линкуется через секцию импорта: как version.dll в вашем примере. И загрузка dll происходит из-за порядка поиска dll, а не из-за сторонних механизмов загрузки.
Если вам просто нужны примеры, то это легко.
1. Сейчас перезапустил какой-то сервис NVIDIA. В результате вижу, что их утилита усиленно ищет amdvlk32.dll и amdvlk64.dll по путям PATH и не находит. По названию похоже, что это как-то связано с Vulkan, но у меня его нет, и ПО продолжает работу.
2. Майкрософт в Win 10 начиная с 21H1 сделал увлекательную вещь — почти все процессы смотрят есть ли файл C:\Windows\system32\EdgeGdi.dll и если есть, то загружают. По умолчанию его нет. Скажем спасибо, что только по этому пути проверяет, без дальнейшего поиска.
Нет. Если в PATH только папки, куда доступна запись администраторам (из Program Files, например), то ничего особо страшного в этом нет. А вот папки доступные всем — это уже проблема.
При попытке загрузить библиотеку не по полному имени будет осуществлен поиск библиотеки. Примерный порядок по-умолчанию: папка с исполняемым файлом, system32, system, Windows, текущая папка исполняемого файла, пути из переменной PATH.
Собственно при попытке загрузить несуществующую dll поиск будет доходить до последнего пункта.
К сожалению, такие загрузки случаются довольно часто.
Я создал папку d:\dropbox\utils и добавил ее в свой PATH. Таким образом, он будет на всех моих компьютерах, и я могу мгновенно добраться до любого из них.
Вот прям «отличный» совет! Начиная с того, что добавили папку доступную для записи всем пользователям в PATH, чем сделали очень простой плацдарм для атак по dll hijack. Так еще в случае успеха, эта атака пойдет не только на целевом компьютере, но и на всех доступных автору.
Продолжаем рассуждения.
cd = 0 (mod 4), и мы знаем, что c нечетное, d — четное. Отсюда d не может быть 4 и 8, только 2 или 6.
Значит число имеет вид abc258ghi0 или abc654ghi0.
Раз abcdefgh = 0 (8), то и fgh = 0 (8). f у нас или 8 или 4, что не влияет и получается, что необходимо gh = 0 (8). Вспоминаем о четности и gh есть только три варианта 16, 32, 72.
Собираем варианты с предыдущими знаниями:
abc25816i0
abc65432i0
abc65472i0
Выпишем оставшиеся цифры рядом с этими вариантами и в скобочках укажем значение по модулю 3.
abc25816i0 3479 (0110)
abc65432i0 1789 (1120)
abc65472i0 1389 (1020)
Очевидно, что для первого варианта мы не соберем тройку abc = 0 (3). Осталось всего 8 вариантов:
18965432i0
98165432i0
78965432i0
98765432i0
18365472i0
38165472i0
18965472i0
98165472i0
Здесь я бессовестно взял калькулятор и проверил какое число из семи цифр делится нацело на 7. Оказалось это 3816547.
Ну и итоговый ответ: 3816547290.
Пользуюсь VE400.
Если бы Zalman сделал нормальные кнопки, а не «типа сенсорные», то устройство было бы просто идеальным. Очень быстро перестали работать, после чего управлять образами стало возможно только оставляя один образ в папке _ISO.
Скачал что-то порядка 22гб, но потом на оффлайн машине при установке оно не смогло установиться.
После подключения интернета, установщик потратил меньше мегабайта, но смог-таки все сделать.
Лукавите где-то. Любое рациональное число можно представить в виде дроби a/b, где a — целое, b — натуральное. Взяв длинную арифметику для этих чисел получим произвольную точность.
Вот корректная ссылка. Не надо пользоваться мусорными промптопереводилками.
superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8
Суть задачи — даются два вещественных числа и нужно написать равны ли они, а если не равны, то их разницу.
Показывает свое решение — код прошел 10 тестов из 31. Смотрю на код — вроде все верно. Если равны, то сообщение; если одно число больше, то вычитаем из большего меньшее.
В логике ошибок не вижу. Говорит, что причины ошибок указаны такие:
В результате оказалось, что товарищ в коде делал:
cout << to_string(a-b); // выведет, например «0.900000»
А надо было:
cout << a-b; // выведет, «0.9».
Говорит, что вроде в лекциях упоминали или использовали именно to_string. Про точность в ответе в задаче я не увидел.
Учитывая, что ситуация один-в-один гуглится прям сразу, то выглядит это не хорошо. Особенно для одной из первых задач.
За исключением этого момента курс хвалил, но опять же занимается еще не долго, посмотрим, что скажет в конце.
Задача, фактически, сведена к предыдущей — есть множество известных элементов, из которого один отсутствует. Снова xor'им, чтобы найти u (или v), далее оставшееся.
crc32( a ) ^ crc32( b ) ^ crc32( c ) = crc32(a ^ b ^ c)
Какой же халтурный перевод.
1. Сейчас перезапустил какой-то сервис NVIDIA. В результате вижу, что их утилита усиленно ищет amdvlk32.dll и amdvlk64.dll по путям PATH и не находит. По названию похоже, что это как-то связано с Vulkan, но у меня его нет, и ПО продолжает работу.
2. Майкрософт в Win 10 начиная с 21H1 сделал увлекательную вещь — почти все процессы смотрят есть ли файл C:\Windows\system32\EdgeGdi.dll и если есть, то загружают. По умолчанию его нет. Скажем спасибо, что только по этому пути проверяет, без дальнейшего поиска.
Собственно при попытке загрузить несуществующую dll поиск будет доходить до последнего пункта.
К сожалению, такие загрузки случаются довольно часто.
Вот прям «отличный» совет! Начиная с того, что добавили папку доступную для записи всем пользователям в PATH, чем сделали очень простой плацдарм для атак по dll hijack. Так еще в случае успеха, эта атака пойдет не только на целевом компьютере, но и на всех доступных автору.
cd = 0 (mod 4), и мы знаем, что c нечетное, d — четное. Отсюда d не может быть 4 и 8, только 2 или 6.
Значит число имеет вид abc258ghi0 или abc654ghi0.
Раз abcdefgh = 0 (8), то и fgh = 0 (8). f у нас или 8 или 4, что не влияет и получается, что необходимо gh = 0 (8). Вспоминаем о четности и gh есть только три варианта 16, 32, 72.
Собираем варианты с предыдущими знаниями:
abc25816i0
abc65432i0
abc65472i0
Выпишем оставшиеся цифры рядом с этими вариантами и в скобочках укажем значение по модулю 3.
abc25816i0 3479 (0110)
abc65432i0 1789 (1120)
abc65472i0 1389 (1020)
Очевидно, что для первого варианта мы не соберем тройку abc = 0 (3). Осталось всего 8 вариантов:
18965432i0
98165432i0
78965432i0
98765432i0
18365472i0
38165472i0
18965472i0
98165472i0
Здесь я бессовестно взял калькулятор и проверил какое число из семи цифр делится нацело на 7. Оказалось это 3816547.
Ну и итоговый ответ: 3816547290.
Если бы Zalman сделал нормальные кнопки, а не «типа сенсорные», то устройство было бы просто идеальным. Очень быстро перестали работать, после чего управлять образами стало возможно только оставляя один образ в папке _ISO.