Страница 1 из 2
Вопрос с интервью
Добавлено: 22 сен 2006, 10:07
nemiga
Дана программа (псевдокод):
Код: Выделить всё
integer N; N -- целое. Разрядность велика, но конечна
input N; юзер вводит начальное число с клавиатуры
1000; Метка -- начало цикла
if Even(N)=true then N:=N/2 else N:=3*N+1; Если N четное, то разделить его пополам, иначе утроить и прибавить 1
print N; вывод нового значения N
goto 1000; возврат в начало цикла на метку 1000
Вопрос: Каким условиям должно удовлетворять входное число N, чтобы при выполнении этой программы не произошло переполнение?
Я ответа не знаю
.
Хе хе
Добавлено: 22 сен 2006, 10:32
aissp
Как кодер программисту
n=-1;
Я даже больше скажу переполнится на первом же шаге
Re: Хе хе
Добавлено: 22 сен 2006, 10:44
nemiga
aissp писал(а):Как кодер программисту
n=-1;
А еще?
Как найти метод обнаружения таких чисел?
.
Добавлено: 22 сен 2006, 10:46
aissp
А вот как программист, я еще думаю

Re: Хе хе
Добавлено: 22 сен 2006, 10:53
Otto
aissp писал(а):n=-1
А где здесь переполнение?
Добавлено: 22 сен 2006, 11:00
aissp
unisgned char n = -1;
unsigned char q = n*3+1....
А причем тут unsigned?
Добавлено: 22 сен 2006, 11:06
nemiga
aissp писал(а):unisgned char n = -1;
unsigned char q = n*3+1....
А причем тут unsigned?
.
Re: А причем тут unsigned?
Добавлено: 22 сен 2006, 11:16
Otto
nemiga писал(а):А причем тут unsigned?
Вот и я о том же, в условии сказано - целое число, т.е. N может быть и отрицательным.
Re: А причем тут unsigned?
Добавлено: 22 сен 2006, 11:20
nemiga
Otto писал(а):nemiga писал(а):А причем тут unsigned?
Вот и я о том же, в условии сказано - целое число, т.е. N может быть и отрицательным.
Тут мне подсказывают из другой конфы: Оказывается некоторые всерьез думают, что отрицательные числа не могут быть четными или нечетными
.
Добавлено: 22 сен 2006, 11:33
aissp
OK разжуем
unsigned char q = -1;
unsigned char s = q>>2;
char p = s;
char result = s*3+1;
Вместо типа поставьте люьой другой требуемый в задаче
s=63 p=63 result != 190
если ето не переполнение то я не знаю что это такое. Или по другому, у мальчика Васи было 63 рубля (он добился етих рублей махинациями с числами скажем на бирже) после етого мальчик вася пошел в банк Хопер инвест, где ему сказали что всего за месяц утроят его капитал и даже положут ему сверху рупль. Мальчик Вася расчитывает получить 190 руплев, однако в конце месяца к нему приходят братки с паяльничком и требуют 66 руплев долга, которые он задолжал Хопру инвест. Мальчик Вася плаятит ети деньги, потом находит программиста сидорова и вставляет ему кипятильник в рот. Может ето и не прполнение, но программисту сидорову с паяльником от етого не легчее
Добавлено: 22 сен 2006, 11:37
Otto
У тебя разрядность - байт и переполнение из-за знака. Это совсем другая задачка.
Исходная задачка гораздо интереснее.
У кого еще какие мысли есть?
Добавлено: 22 сен 2006, 11:51
nemiga
Otto писал(а):У тебя разрядность - байт и переполнение из-за знака. Это совсем другая задачка.
Исходная задачка гораздо интереснее.
У кого еще какие мысли есть?
Все правильно, разрядность предполагается очень большая.
По существу, нужно определить, при каких N последовательность выводимымых на печать чисел стремится к бесконечности.
.
Добавлено: 22 сен 2006, 11:56
aissp
Вообще про байт там не слова - вместо байта можно использовать
MonsterVasjaBigDigit тип. Опять же если не заметил, я написал что отвеячаю как кодер. Мне надо было добитьсе перполнения, я его добился. Если надо что то другое, то и задачу надо ставить другую. Например так, существует ли последовательность чисел, правила генерации которой описаны в посте немиги и предел которой при n стремяцемся к бесконечности тоже стремиться к ней. Но согласись ето совсем другая задача. Скажу больше, если тебя попросили написать программу а ты начал ее с проектирование операционной системы - то ето минус для программиста как мне кажется.
Ок ок отвечаю точно на условие задачи.
Вопрос: Каким условиям должно удовлетворять входное число N, чтобы при выполнении этой программы не произошло переполнение?
Ответ: число должно быть степенью двойки.
Re: Вопрос с интервью
Добавлено: 22 сен 2006, 12:20
ajkj3em
это вопрос на общее образование. это так называемые числа-градины
(hailstone numbers).
http://mathworld.wolfram.com/CollatzProblem.html
IIRC среди начальных условий есть т.н. резонаторы, но формула для
них не известна. так что ответ на оригинальный вопрос -
XЗ
Re: Вопрос с интервью
Добавлено: 22 сен 2006, 16:11
Otto
Спасибо! Интересная инфа. В общем,
пока ХЗ
