Форум: "Прочее";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизГениальная задача Найти похожие ветки
← →
GeLLeR © (2006-10-12 18:20) [0]На олимпиаде 11 класса по инф-ке. Хотя задача для 5-го класса:
Обменять две числовые переменные не вводя третью. Думал минут 10!!! Позор...
← →
Стаффаж © (2006-10-12 18:22) [1]Классика
← →
oldman © (2006-10-12 18:23) [2]В условии числовые не обязательно. Хотя, это уже для 6 класса. :)
← →
Думкин © (2006-10-12 18:27) [3]> GeLLeR © (12.10.06 18:20)
А у вас есть полный ответ, например, для Паскаля?
← →
Gero © (2006-10-12 18:27) [4]И как решил?
← →
GeLLeR © (2006-10-12 18:28) [5]A=5
B=6
A=A+B
B=A-B
A=A-B
← →
ANB © (2006-10-12 18:28) [6]во млин. а я не умею. так правильно ?
x := x + y;
y := x - y;
x := x - y;
← →
ANB © (2006-10-12 18:30) [7]а на асме можно одним оператором, вроде как. что то вроде XCHNG
← →
GeLLeR © (2006-10-12 18:30) [8]ANB © (12.10.06 18:28) [6]
Забыл смайлик???
← →
Zeqfreed © (2006-10-12 18:33) [9]xor"ом интересней.
← →
jack128 © (2006-10-12 18:33) [10]а для НЕчисловых (см [2] ) как???
← →
Gero © (2006-10-12 18:34) [11]> [9] Zeqfreed © (12.10.06 18:33)
Конечно, и защищиет от выхода за границы диапазона.
← →
Zeqfreed © (2006-10-12 18:35) [12]> [11] Gero © (12.10.06 18:34)
Именно.
← →
Zeqfreed © (2006-10-12 18:38) [13]> [10] jack128 © (12.10.06 18:33)
Может быть имеется в виду то, что можно проксорить любую произвольную область памяти?
← →
ANB © (2006-10-12 18:40) [14]
> GeLLeR © (12.10.06 18:30) [8]
не. не забыл. тока сейчас дотумкал, да уже решение опубликовалию всегда менял через третью.
Кстати, а как корректно строки разного размера поменять ?
← →
Думкин © (2006-10-12 18:40) [15]
> GeLLeR © (12.10.06 18:28) [5]
> A=5
> B=6
> A=A+B
> B=A-B
> A=A-B
var A,B : byte;
a:=100;
b:=200;
← →
oldman © (2006-10-12 18:40) [16]
> jack128 © (12.10.06 18:33) [10]
> а для НЕчисловых (см [2] ) как???
a:="Сам дурак"
b:="От такого слышу"
вспоминаем Clipper
a:=a+b
b:=substr(a,1,len(a)-len(b))
a:=substr(a,len(a)-len(b)+1,len(a)-len(b))
Переводим на дельфи :)))
← →
default © (2006-10-12 18:44) [17]на олимпиады такие баяны кидают, ужас
← →
jack128 © (2006-10-12 18:49) [18]oldman © (12.10.06 18:40) [16]
Ну понятно. Работает для всех типов, для которых определены операции сложения и вычитания.
← →
default © (2006-10-12 18:50) [19]а кроме +/- и xor кто-нибудт может предложить?
← →
McSimm © (2006-10-12 18:51) [20]я тут наваял вариант, без риска переполнения:
$x ^= $y ^= $x ^= $y;
Сорри, не паскаль малость :)
← →
guav © (2006-10-12 18:55) [21]> [16] oldman © (12.10.06 18:40)
А например поменять местами файловые переменные Input и Output ? ;-)
← →
ANB © (2006-10-12 18:55) [22]
> a:=a+b
> b:=substr(a,1,len(a)-len(b))
> a:=substr(a,len(a)-len(b)+1,len(a)-len(b))
ну нафиг. обмен через третью переменную шустрее отработает. и короче.
← →
Zeqfreed © (2006-10-12 18:55) [23]> [20] McSimm © (12.10.06 18:51)
xor, говорят ([19]), уже не в моде :)
← →
McSimm © (2006-10-12 18:58) [24]
> Zeqfreed © (12.10.06 18:55) [23]
> xor, говорят ([19]), уже не в моде :)
А мы за модой не гоняемся.
Зато как красиво смотрится! :))
← →
vidiv © (2006-10-12 19:00) [25]так чтоли? :)
x:=x xor y;
y:=x xor y;
x := x xor y;
← →
default © (2006-10-12 19:02) [26]GeLLeR © (12.10.06 18:20)
вот тебе ещё задачка
отрицательные числа в компе, как известно, в дополнительном коде представляются
чтобы из положительного числа получить отрицательное в литературе говорят что надо инвертировать биты, а потом прибавить 1
скажи, откуда это правило взялось?
← →
Zeqfreed © (2006-10-12 19:04) [27]> [25] vidiv © (12.10.06 19:00)
Да.
← →
isasa © (2006-10-12 19:07) [28]jack128 © (12.10.06 18:33) [10]
а для НЕчисловых (см [2] ) как???
:)
Сериализация - десериализация ...
← →
default © (2006-10-12 19:17) [29]кстати и при помощи +/- можно переполнения избежать:) если подумать
← →
@!!ex © (2006-10-12 19:33) [30]
> А например поменять местами файловые переменные Input и
> Output ? ;-)
Если Input и Output - Стандарта Windows или *nix, То также как и числа, потому что они - числа.
← →
default © (2006-10-12 19:38) [31]в сишном коде икчендж можно, например, так сделать
int x = 5, y = 7;
y = x + 0 * (x = y);
← →
vidiv © (2006-10-12 19:45) [32]
> в сишном коде икчендж можно, например, так сделать
> int x = 5, y = 7;
> y = x + 0 * (x = y);
ИМХО неправильно, ибо компилятор будет "незаметно" использовать третью переменную :)
← →
vidiv © (2006-10-12 19:45) [33]точнее нечестно =)
← →
@!!ex © (2006-10-12 19:54) [34]
> vidiv © (12.10.06 19:45) [32]
Не факт.
← →
@!!ex © (2006-10-12 19:55) [35]P.S.
регистр и переменная - большая разница.
← →
Marser © (2006-10-12 19:56) [36]> [35] @!!ex © (12.10.06 19:55)
> P.S.
> регистр и переменная - большая разница.
Ошибочка. Как ромб и квадрат. Вот ячейка памяти и регистр процессора - действительно разные вещи.
← →
@!!ex © (2006-10-12 19:57) [37]
> Marser © (12.10.06 19:56) [36]
Согласен, не правильно выразился.
Но вы меня поняли, :)
← →
Vendict © (2006-10-12 20:38) [38]ANB © (12.10.06 18:30) [7]
а на асме можно одним оператором, вроде как. что то вроде XCHNG
можно вроде так, но это не один оператор:push a
push b
pop a
pop b
хотя тем же принципом можно и строковые (через стек всмысле)
← →
Суслик © (2006-10-12 23:32) [39]а я вообще не догадался, тупой видать.
← →
Kolan © (2006-10-12 23:40) [40]
> а я вообще не догадался, тупой видать.
Я бы тоже через 3 поменял бы, и пошел дальше.A=5
B=6
A=A+B
B=A-B
A=A-B
Потом через год вспоминай что это за бред...
← →
Ученик чародея © (2006-10-13 00:19) [41]Только про XCHG и PUSH/POP хотел сказать.., так опередили.
В принципе указанная выше задача показывает, что излишнее знание математики для программирования даже вредно, так как код, написанный чистыми математиками в коммерческих приложениях использовать нельзя.
← →
default © (2006-10-13 00:23) [42]Ученик чародея © (13.10.06 00:19) [41]
> что излишнее знание математики для программирования даже
> вредно, так как код, написанный чистыми математиками в коммерческих
> приложениях использовать нельзя.
серьёзная тут математика: операции прибавить и отнять:)
ты думаешь если кто-то смог додуматься до хитрого решения он не сможет увидеть его непрактичность если таковая имеется?:) если красивое решение будет непрактичным оно останется лишь в голове её разработчика:)
← →
default © (2006-10-13 00:25) [43]
> vidiv © (12.10.06 19:45) [32]
>
> > в сишном коде икчендж можно, например, так сделать
> > int x = 5, y = 7;
> > y = x + 0 * (x = y);
>
> ИМХО неправильно, ибо компилятор будет "незаметно" использовать
> третью переменную :)
конечно, компиллер скомпилит код в котором будет третья переменная
но идея как раз и базировалась использовать этот нюанс сишного кода
то есть что бы эта промежуточная переменная "осталась за кадром":)
← →
Думкин © (2006-10-13 05:55) [44]> Ученик чародея © (13.10.06 00:19) [41]
Любите вы всякую чушь громогласно произносить. Покажите мне математика, который бы в реальной программе предложил использовать вышеуказанное? Но вот если бы были проблемы с доп. памятью - то математик может дать ответ - возможно ли решение или нет, в то время как Эдельвейсы будут строить ВД первого рода читая учебник Савельева до посинения.
← →
Sandman29 © (2006-10-13 08:45) [45]В общем виде задача не имеет решения.
Попробуйте обменять byte и File :)
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.043 c