Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Гениальная задача   Найти похожие ветки 

 
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

Потом через год вспоминай что это за бред...



Страницы: 1 2 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.051 c
15-1160987619
Juice
2006-10-16 12:33
2006.11.05
Средство разработки на Java


2-1161365018
kcol
2006-10-20 21:23
2006.11.05
функция / процедура


15-1160995571
default
2006-10-16 14:46
2006.11.05
Обязан работодатель отвечать на резюме?


15-1160414992
Kolan
2006-10-09 21:29
2006.11.05
А что это mail.ru падать вздумал?


15-1160658233
Tigraman
2006-10-12 17:03
2006.11.05
Проблема с сетью