Главная страница
    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.53 MB
Время: 0.048 c
2-1161180240
Adios
2006-10-18 18:04
2006.11.05
вопрос про строку


3-1157621718
NotGooDP
2006-09-07 13:35
2006.11.05
Триггеры в MsSQL


2-1160907447
Kolan
2006-10-15 14:17
2006.11.05
Правильно сложить 2 дин. массива


15-1160936200
Сало
2006-10-15 22:16
2006.11.05
61 MIPS. Какой это проц?


2-1161179621
Ol&Kot
2006-10-18 17:53
2006.11.05
Помогите написать прогу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский