Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:users:fun

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
etc:users:fun [2010/01/28 04:28] krinkinmuetc:users:fun [2016/08/08 20:53] (current) – ↷ Links adapted because of a move operation kel
Line 17: Line 17:
 **Решение** **Решение**
 Если в задаче разрешено использовать дополнительную память, то решение простое, с помощью стека. Пришли в вершину заносим в стек (что имено заносим и в каком порядке зависит от того, какой обход нужен: КЛП, ЛКП и т.д.) Если в задаче разрешено использовать дополнительную память, то решение простое, с помощью стека. Пришли в вершину заносим в стек (что имено заносим и в каком порядке зависит от того, какой обход нужен: КЛП, ЛКП и т.д.)
 +
 +**И чем же это отличается от рекурсии? У этой задачи есть решение без использования дополнительной памяти.**
 +
 +Ну формально это не рекурсия, врочем, не важно, если есть другое решение будем думать)
  
 23. Есть круглый бассейн. От его бортика в направлении точно на север отплыла рыба. Проплыв 6 метров, она опять столкнулась с бортиком. Тогда рыба повернула на восток, проплыла еще 8 метров и опять столкнулась с бортиком. Найти диаметр бассейна. (опять Мартин Гарднер)  23. Есть круглый бассейн. От его бортика в направлении точно на север отплыла рыба. Проплыв 6 метров, она опять столкнулась с бортиком. Тогда рыба повернула на восток, проплыла еще 8 метров и опять столкнулась с бортиком. Найти диаметр бассейна. (опять Мартин Гарднер) 
Line 32: Line 36:
 **Решение** **Решение**
 Ну как минимум одно решение будет основано на законе сохранения импульса, т. е. нужно выбросить что-нибудь в сторону противоположную берегу, тогда, так как закону сохранения импульса суммарный импульс будет равен 0, мы будем двигаться к берегу. Возможны всякие неинтересные решения по типу испортить лед, чтобы получить трение. Можно также использовать реактивное движение (т. е. не бросить что-нибудь в сторону противоположную берегу, а, скажем, плюнуть (хотя наверно это тоже самое, что и выбросить), но можно еще дунуть, или извергнуть из себя еще что-нибудь ненужное) Ну как минимум одно решение будет основано на законе сохранения импульса, т. е. нужно выбросить что-нибудь в сторону противоположную берегу, тогда, так как закону сохранения импульса суммарный импульс будет равен 0, мы будем двигаться к берегу. Возможны всякие неинтересные решения по типу испортить лед, чтобы получить трение. Можно также использовать реактивное движение (т. е. не бросить что-нибудь в сторону противоположную берегу, а, скажем, плюнуть (хотя наверно это тоже самое, что и выбросить), но можно еще дунуть, или извергнуть из себя еще что-нибудь ненужное)
 +
 +29. В какие времена суток положение всех трех стрелок часов (часовой, минутной и секундной) совпадает? (не помню откуда)Разъяснение Часы механические, и стрелки двигаются с равномерной скоростью.
 +
 +**Решение**
 +Мы точно знаем, что в 00:00:00 все стрелки сходятся вместе, в следующий раз они сойдутся (грубая оценка) в интервале от 01:00:00 до 02:00:00, потом в интервале от 02:00:00 до 03:00:00 и тд, последний раз такое случится в интервале от 10:00:00 до 11:00:00 (рассматриваем только 12 часов, потому что дальше все повторяется), таким образом мы получили 11 интервалов, тогда требуемое событие происходит с периодом 1 час + 1/11 часа (12/11), зная начальное решение (00:00:00) мы можем получить все. Кстати задача имеет и строгое математическое решение, но его неудобно сюда вписывать.
 +
 +20. Как провести электричество, чтобы свет на лестнице можно было включать/выключать и с верхней площадки, и с нижней. Нарисуйте схему проводки.
 +
 +**Решение**
 +
 +{{etc:users:схема.png|}}
 +Задан источник постоянного тока, но в данном случае это не важно. Свет горит, когда оба выключателя замкнуты на одну внешнюю ветвь. Должно быть решение более сложное, но с одной лампочкой (кстати лампочка обозначена чисто формально, там может быть целая система световых приборов).
 +
 +Может {{etc:users:jcmvbkbc:problems-scheme-2.png|}} ? ага так, чет про более сложное решение я косанул)
 +
 +4. Что делает следующий С++ код? (Matt Marcus)
 +
 +<code cpp>.
 +struct A {
 +   A(const volatile void*);
 +};
 +
 +char f(A);
 +int f(...);
 +
 +template <class T>
 +struct Test {
 +   static const int value = (sizeof(f(*(T*)0)) == sizeof(char));
 +};
 +
 +</code>
 +
 +**Решение**
 +*(T*) 0 - я немного не уверен в этой конструкции (как я понял, (Т*) 0 - это приведение 0 к типу T*, а первая * - это разыменование???), но в целом, (sizeof(f(*(T*)0)) - проверяет размер возвращаемого значения для функции с параметром типа Т, сравнивает с размером типа char, и таким образом, если для Т = А, то (sizeof(f(*(T*)0)) = 1, для T != A, получим (sizeof(f(*(T*)0)) = 4 (ну я принял, что sizeof(char) = 1 и sizeof(int) = 4), ну и в зависимости от того, какой тип передан в качестве T, value равно 0 или нет. Вот как-то так.
etc/users/fun.1264642085.txt.gz · Last modified: 2010/01/28 04:28 by krinkinmu