Форум умных людей

Задачи и головоломки => Логические задачи и головоломки => Тема начата: iPhonograph от Февраль 03, 2011, 06:57:10



Название: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 06:57:10
Представьте, что Вы - хакер.
В Ваши руки попала вражеская секретная программа.
Вам нужно понять, что она делает.
Вы декодировали машинные инструкции и получили программу на алгоритмическом языке:

1. Алгоритм, вычисляющий X(M,N)
Вход: M, N
Выход: X

X=0
A=1
пока M не нуль, выполнять
   если M нечётно, то
      M=M-N
      X=X+A
   конец если
   A=A+A
   M=[M/2]
конец пока


Что этот кусок программы делает?
Что это за функция такая X(M,N) ?
Ответ дать простыми словами.




2. Алгоритм, вычисляющий Y(N)

Y=1
A=2*(N mod 2)
B=2*(1-A)
повторить [(N+1)/2] раз
   A=A+B
   B=B+8
   Y=Y*max(1,A)
конец повторить





3. Алгоритм, вычисляющий Z(N)

Определим последовательность A(1)..A(14) = 91, 85, 51, 38, 33, 29, 23, 19, 17, 13, 11, 14,  2,  1
Определим последовательность B(1)..B(14) = 17, 78, 19, 23, 29, 77, 95, 77,  1, 11, 13, 15, 15, 55
M=2
повторить N раз
   повторять
      K=0
      повторять
         K=K+1
      пока A(K) не будет делителем M
      M=B(K)*M/A(K)
   пока M не станет степенью двойки
конец повторить
Z=log
2(M)


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 07:38:45
X=[M/N]


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 07:52:22
проверь при M=1, N=2


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 08:05:26
Так это будет бесконечный алгоритм


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 08:08:57
Значит, ты его не понял


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 08:13:22
Так может, "пока М больше нуля"?

Твой алгоритм, М=1 N=2
М - нечетное
М=М-N=1-2=-1
М - нечетное
М=М-N=-1-2=-3
и т.д.


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 08:26:57
ты подгоняешь алгоритм под свою функцию
а надо найти функцию, которую вычисляет этот алгоритм


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 08:28:35
Подожди.
Если М=1 N=2 , что будет на выходе?
У меня по твоему алгоритму получается Х=бесконечность


Название: Re: Для кулхацкеров
Отправлено: Ленка Фоменка от Февраль 03, 2011, 08:48:09
Так может, "пока М больше нуля"?

Твой алгоритм, М=1 N=2
М - нечетное
М=М-N=1-2=-1
М - нечетное
М=М-N=-1-2=-3
и т.д.
Умник, а это то действие всегда выполняется:
A=A+A
M=[M/2]


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 08:49:39
Почему?
Как я понял, оно выплняется только тогда, когда М - не нечетное, т.е. четное.


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 09:14:59
Почему?
Как я понял, оно выплняется только тогда, когда М - не нечетное, т.е. четное.
неправильно понял


Цитировать
Если М=1 N=2 , что будет на выходе?
на этом наборе значений функция не определена
а твоя определена


Название: Re: Для кулхацкеров
Отправлено: Ленка Фоменка от Февраль 03, 2011, 09:39:53
Почему?
Как я понял, оно выплняется только тогда, когда М - не нечетное, т.е. четное.
нет, если М-нечетное, то выполняется
M=M-N
X=X+A

Это выполняется в любом случае:
A=A+A
M=[M/2]

 Про то, что М долно быть четно нет не слова.
и условия тоже нет


Название: Re: Для кулхацкеров
Отправлено: seamew от Февраль 03, 2011, 10:06:22
то есть, если М - четно, то ничего не выполняется?

как-то у меня была задача по информатике:

Заданы функции:
 (http://savepic.org/1307674.gif)
 
(http://savepic.org/1295386.gif)

Найти оптимальное значение параметра a2=a*  по критерию
 
(http://savepic.org/1288218.gif)

d – абсцисса точки пересечения графиков функций (http://savepic.org/1293338.gif)  и (http://savepic.org/1281050.gif) .
 
сигма1=сигма2=0.5
а1=2
с=1
е=4

тут решение находится подбором...
ну то есть сначала "метод половинного деления", потом "метод золотого сечения" и т.д.
мне чем-то напомнило... может, тут тоже функция с двумя неизвестными...


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 10:38:11
Ладно, не буду мучить, ответ на первое задание:
Показать скрытый текст

Первый пост обновлён, добавлена вторая программа


Название: Re: Для кулхацкеров
Отправлено: seamew от Февраль 03, 2011, 10:41:45
Да боже ж ты мой, объясните мне хоть кто-нибудь наконец, что такое mod ???


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 10:53:40
Y=N! при четных N
Y=0 при нечетных N


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 10:54:26
Да боже ж ты мой, объясните мне хоть кто-нибудь наконец, что такое mod ???
a mod b - остаток от деления a на b


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 10:54:56
мод - это остаток от деления
M mod N может быть от 0 до N-1


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 10:55:33
Y=N! при четных N
Y=0 при нечетных N
неправильно


Название: Re: Для кулхацкеров
Отправлено: seamew от Февраль 03, 2011, 10:57:44
мод - это остаток от деления
M mod N может быть от 0 до N-1
а почему до N-1?
то есть
5 mod 2 = 1? я правильно поняла?


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 10:59:51
Y=N! при четных N
Y=0 при нечетных N
неправильно
Ну N принадлежит Z, N>-2
при N=-1 Y=1
при N=0 Y=1
при N=2k Y=N!, где k - целое число
при N=2k+1 Y=0, где k - целое число


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 11:00:34
а почему до N-1?
Потому что сотаток не может быть больше или равен делителю.
то есть
5 mod 2 = 1? я правильно поняла?
ага


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 11:03:55
у тебя ошибка
ищи


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 11:07:08
А [5,5]=5? или 6?


Название: Re: Для кулхацкеров
Отправлено: seamew от Февраль 03, 2011, 11:09:11
Y=1                                                  
A=2*(N mod 2)        
B=2*(1-A)

    раз N нечетное, то получается A=2 B=-2                            

повторить [(N+1)/2] раз
   A=A+B
A=2-2 = 0
   B=B+8
B=6
   Y=Y*max(1,A)
конец повторить

повторить [(N+1)/2] раз


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 11:12:13
А [5,5]=5? или 6?
5


Название: Re: Для кулхацкеров
Отправлено: VVV от Февраль 03, 2011, 11:16:41
   Первый алгоритм не осуществляет деления нацело на нечетное число. Лишь в редких случаях. Чему равно 8 div 7 по этому алгоритму?


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 11:19:34
Аа, просто Y=N!
ну и при N=-1 Y=1


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 11:32:21
   Первый алгоритм не осуществляет деления нацело на нечетное число. Лишь в редких случаях. Чему равно 8 div 7 по этому алгоритму?
"Деление нацело" - это когда числа делятся нацело
А то деление, которое обычное - это "деление с остатком"
Алгоритм не вычисляет div
для чисел 8 и 7 он и не должен ничего вычислять

Аа, просто Y=N!
ну и при N=-1 Y=1
ну наконец-то!


Смотрите третью задачку, она посложнее


Название: Re: Для кулхацкеров
Отправлено: seamew от Февраль 03, 2011, 11:36:12
Умник, объясни мне, я не поняла


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 11:45:02
N принадлежит Z
N>-1
Z=N+1


Название: Re: Для кулхацкеров
Отправлено: VVV от Февраль 03, 2011, 11:48:30
  А -7 на 7 этот алгоритм делит нацело?


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 11:55:02
Умник, объясни мне, я не поняла
Если Н - четное, то А=2*0=0, а В=2*(1-0)=2
Начинаем раз за разом делать цикл:
А=2 В=10
А=12 В=18
А=30 В=26
и т.д.
Замечаем, что
А=2=1*2
А=12=3*4
А=30=5*6
Теперь смотрим, как они увеличиваются
3*4=4+4+4
4*5=4+4+4+4+4
А(А+1)-(А-1)А=2А
(А+2)(А+1)-(А+1)А=2(А+1)
(А+2)(А+1)-(А-1)А=4А+2
У нас А увеличивается на 2, значит разница увеличивается на 8.
*Это было такое сумбурное доказательство как бэ по индукции*

Ну и для нечетных примерно так же доказывается.

Основная идея доказательства: не надо у меня спрашивать, как я решил, я сам не знаю)


Название: Re: Для кулхацкеров
Отправлено: seamew от Февраль 03, 2011, 12:03:22
мне кажется, я туповата...


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 13:01:04
  А -7 на 7 этот алгоритм делит нацело?
ну вот, начали придираться :)


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 13:02:42
N принадлежит Z
N>-1
Z=N+1
нет


Название: Re: Для кулхацкеров
Отправлено: Strike от Февраль 03, 2011, 13:04:42
3) log2(15) :-\


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 13:05:33
3) log2(15) :-\
ответ = константа для любого входного N ?
неверно


Название: Re: Для кулхацкеров
Отправлено: Strike от Февраль 03, 2011, 13:10:22
3) log2(15) :-\
ответ = константа для любого входного N ?
неверно
А log2(15) разве не константа ?(от N не зависит)


Название: Re: Для кулхацкеров
Отправлено: Strike от Февраль 03, 2011, 13:13:20
хоть возможно и z = 1 ???


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 03, 2011, 13:14:12
ответ не должен быть константой, он зависит от N


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 13:26:26
Че нет-то?)))


Название: Re: Для кулхацкеров
Отправлено: VVV от Февраль 03, 2011, 13:39:33
  Кто-нибудь посчитал Z(1), Z(2), Z(3)? Неплохо бы программку написать. Многовато вычислений.


Название: Re: Для кулхацкеров
Отправлено: Strike от Февраль 03, 2011, 13:43:36
где в этом алгоритме видно, что Z зависит отN ??? :-\ ?


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 03, 2011, 14:14:49
Если на входе M=2^n, то на выходе будет M=2^(n+1)
(Только что посчитал специально, раз уж Дискоед сказал, что неправильно. Могу выложить решение)
Соответственно, если М=2^1 и повторять цикл N раз, то на выходе получится М=2^(N+1)
Ну и Z=log2(2^(N+1))=N+1

Где ошибка?


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 04, 2011, 07:52:43
Если на входе M=2^n, то на выходе будет M=2^(n+1)
(Только что посчитал специально, раз уж Дискоед сказал, что неправильно. Могу выложить решение)
Соответственно, если М=2^1 и повторять цикл N раз, то на выходе получится М=2^(N+1)
Ну и Z=log2(2^(N+1))=N+1

Где ошибка?
В вычислениях где-то
Запусти на компьютере, увидишь правильные Z(1),Z(2),...


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 04, 2011, 08:52:13
Я не программист


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 04, 2011, 09:01:47
И чо, даже программируемого калькулятора в руках не держал?


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 04, 2011, 09:08:50
Это типа МК-** ?
Держал, у бабушки :D


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 04, 2011, 09:30:49
так у тебя бабушка на нём программирует?
 ;D


Название: Re: Для кулхацкеров
Отправлено: Um_nik от Февраль 04, 2011, 09:35:54
Возможно ;D


Название: Re: Для кулхацкеров
Отправлено: VVV от Февраль 04, 2011, 15:34:47
   Maple говорит, что Z(i) - это  i-ое простое число.


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 04, 2011, 17:45:38
Трудно не верить Maplу :)


Название: Re: Для кулхацкеров
Отправлено: VVV от Февраль 04, 2011, 19:20:17
   Продолжение следует? Maple требует продолжения банкета.


Название: Re: Для кулхацкеров
Отправлено: iPhonograph от Февраль 04, 2011, 19:39:20
так мапл только подсказку дал наводящую
теперь это нужно доказать


Название: Re: Для кулхацкеров
Отправлено: VVV от Февраль 04, 2011, 21:10:38
    Надо думать. Выглядит все загадочно.