LINUX.ORG.RU

Можно ли математически определить чётность числа?

 , , ,


0

3

Есть такая задачка. Вероятно, решения она не имеет.

Как из любого целого N сделать -1, если оно нечётное или 1, если оно чётное.
Можно использовать само N, константы (любые целочисленные или с плавающей запятой). Доступны сложение, вычитание, умножение, деление (настоящее).

★★★★★

Последнее исправление: CYB3R (всего исправлений: 2)

Ответ на: комментарий от anonymous

Тоже недоступно. Есть только деление, дающее дробь в результате. А привычное целочисленное деление и остаток от деления использовать нельзя.

CYB3R ★★★★★
() автор топика

Вот же мучаются люди без perl/python/etc.

anonymous
()
Ответ на: комментарий от CYB3R

Без циклов можно было бы написать рекурсивную функцию, но для этого нужны условные операторы, а именно проверка на равенство числа нулю.

ionivan
()
Ответ на: комментарий от aedeph_

N раз перемножить (-1)

Это уже цикл. Если запишешь это не как цикл, а как формулу, задача будет решена.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от arkhnchul

Не видел в условии ничего про циклы. Умножение доступно - значит можно умножать.

aedeph_ ★★
()
Ответ на: комментарий от CYB3R

Или целочисленное деление (с отбрасыванием дробной части)?

Тоже недоступно. Есть только деление, дающее дробь в результате. А привычное целочисленное деление и остаток от деления использовать нельзя.

только деление, дающее дробь в результате

Не хотелось бы никого обидеть, но это условие дебильное (в свете отсутствия циклов и условных операторов).

anonymous
()
Ответ на: комментарий от arkhnchul

Да, для простоты скажем, что N любое целое число от 1 до 20.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Да я знаю, но это крайне ущербный язык, ни одно из перечисленных решений на нём не реализуется.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Произведение -1 от i = 1 до N. Не знаю, как на лоре писать мат. формулы.

ionivan
()
Ответ на: комментарий от aedeph_

Да вижу я, что это формула. Только как ты это запишешь по условию задачи (доступны только 4 математических действия)?

CYB3R ★★★★★
() автор топика
Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от CYB3R

доступны только 4 математических действия

битовых операций тоже нет?

N & 1

Кстати, а как в этом языке реализуется деление на конечной разрядной сетке?

3 * (N/3) == N ???

2 * (N/2) == N ??? для чётных и нечетных

anonymous
()
Ответ на: комментарий от CYB3R

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

hint: доступны далеко не только 4 операции, но и правила их комбинирования. Вот эти правила ты обязан был описать. Но ты не в состоянии. Поэтому в следующий раз заменяй тэги на ЕГЭ.

aedeph_ ★★
()
Ответ на: комментарий от CYB3R

Теперь составляешь многочлен 20-й (вроде бы) степени так, чтобы в целых точках от 1 до 20 он имел значение -1 или 1 в зависимости от чётности числа.

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от CYB3R

На правах зануды: сложение и умножение это формально тоже циклические операции: для упорядоченного множества X сложение определено как:

X := { one, … }
\forall x \in X : +1 (x) \mapsto next(x)
\forall a, b \in X : + (a, b) \mapsto repeat b times +1(a)

Умножение выводится из сложения аналогично.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 3)
Ответ на: комментарий от CYB3R

Тебе нужна периодическая функция. На таком наборе операций её никак не сделать.

PolarFox ★★★★★
()

У тебя в любом случае получится отношение двух многочленов от N. А такая функция не может принимать одно и то же значение в бесконечном количестве точек, не будучи при этом константой.

Miguel ★★★★★
()
Ответ на: комментарий от PolarFox

Кстати, хорошее решение. Легко строится интерполяционный многочлен Лагранжа с такими свойствами.

anonymous
()

проверять последний бит числа уже предлогали ? (-1)**(N&Ox0001)

Dred ★★★★★
()

Можно использовать косинус например, изменив его период соответствующим образом :)

invy ★★★★★
()
Ответ на: комментарий от beastie

Я не говорил, что нельзя использовать циклы. Можно использовать. Но только уже определённые (см. условие). А определять свои нельзя.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Я не говорил, что нельзя использовать циклы. Можно использовать. Но только уже определённые (см. условие). А определять свои нельзя.

Рояль в кустах? Рассказывай, какие «уже определённые» циклы имеются.

Совершенно непонятна твоя мотивировка. В такой постановке задачи нет никакого определения понятия «целого числа». Чётным или нечётным может быть только целое число. Как ты будешь определять допустимость определения чётности/нечётности, если у тебя любое число вещественное?

И как ты собираешься использовать чётность/нечётность, если у тебя отсутствуют логические операторы и циклы?

anonymous
()
Ответ на: комментарий от CYB3R

Тоже недоступно. Есть только деление, дающее дробь в результате. А привычное целочисленное деление и остаток от деления использовать нельзя.

А когда вещественные числа научились различать по четности/нечетности.

quowah
()
Последнее исправление: quowah (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.