Сб 31 Мар 2007
Задача
Posted by Boris under Учёба
[11] Comments
Сегодня семинарист по экономике задал такую задачу:
Дан код на C/C++:
int i, n=20;
for (i=0;i<n;- -i) printf(«x»);
Задача: исправить (добавить / удалить / заменить) в программе один символ, чтобы цикл выполнился 20 раз.
P.S. Эта задача предлагалась на собеседовании на поступление на работу в компанию «Yahoo!».
P.P.S. Мой одногруппник, получивший диплом 3-й степени на международной олимпиаде по программированию среди школьников в 2006 году в Мексике, нашёл все 3 способа за 3-5 минут.
P.P.P.S. Просьба ответы не писать здесь.
Лиля отгадала один способ :) (ответ удалён Борисом, чтобы сохранить его пока в тайне)
Добавлено: Саша К. отгадал второй способ.
А 3й способ – фича в том, что там пробел между минусами? она используется?
если честно – вместо того чтобы отгадывать, пойду смотреть саус) я же не выиграл че-то там в Мексике+)
Нет, не используется, потому что пробел там только для того, чтобы минусы не сливались в длинное тире вот так: «–»
Кирилл решил
Лёша О. тоже
Прикольная задача!
На тему решений с изменениями более чем на 1 символ:
1)
int i, n=20;
for (i=0×80000013;i
Ну вот, мой коммент порезался( Был креатив на тему того, как можно было бы еще решить эту задачу
Больше трёх способов решения нет вроде бы.
Для набора знака «<» используйте «& l t ;»
Объявляю решения:
[+] – -i -> – -n
[+] i<n -> i + n
[+] i<n -> -i<n
2 способ решение ето бред. Програма даже не скомпилиться
[+] i i + n
здесь не понятно когда конец цикла настает
Неправда ваша, программа компилится. условие i+n проходит, пока i+n больше нуля, это ж очевидно