Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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

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



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

Форум: "Прочее";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.042 c
2-1161063939
svt
2006-10-17 09:45
2006.11.05
Мастера, подскажите как сделать так, чтобы


2-1161167932
Priest
2006-10-18 14:38
2006.11.05
Как удалить объект из дочернего потока


15-1160664668
ANB
2006-10-12 18:51
2006.11.05
А кто такая, эта Анна Политковская ?


2-1161538165
abba
2006-10-22 21:29
2006.11.05
Как из A(x1,y1) в B(x2,y2) в StringGrid?


15-1161131078
SerJaNT
2006-10-18 04:24
2006.11.05
Сравнение 2х цветов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский