Давайте тогда уж BigFloat — произвольные дробные с бесконечной точностью. Решение, которое приводил deniok, должно работать и для них. Только на even надо проверять не x, а round(abs(x)).
Здравствуйте, Roman Odaisky, Вы писали:
П>>Найти функцию f, для которой f(f(x)) — -x П>>x — любое вещественное число без ограничений.
RO>Делов-то...
RO>f(f(x)) = -x RO>f² = -1 RO>f = i RO>f(x) = ix
А какое вещественное число обозначено таинственной буквой i?
Здравствуйте, RomikT, Вы писали: RT>А какое вещественное число обозначено таинственной буквой i?
С комплексными тоже прикольно. Но для вещественных тоже строится элементарно. Я уже просек фишку. Нам надо разбить все положительные вещественные числа на непересекающиеся пары. Это можно сделать сотнями способов.
После этого строим функцию:
f(0) = 0
Для любой пары (x1, x2)
f(x1) = x2
f(x2) = -x1
f(-x1) = -x2
f(-x2) = x1
Re[3]: f(f(x)) = -x
От:
Аноним
Дата:
18.01.08 00:08
Оценка:
Здравствуйте, deniok, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
А>>Задача очевидно не имеет решения.
D>Для пуристов: снимаю ограничение на 32 бита. Допустимы произвольные целые — BigInteger.
Ну тогда решение простое: мы имеем 4 перестановки(тк уравнение 4 порядка), так что рассмотрим кольцо -2 -1 0 1 2.
0 преобразуется сам на себя, а из остальных чисел выбираем любой из 2 вариантов, например -2 -> 1, -1 -> -2, 1 -> 2, 2 -> -1.
Так что решение существует для любого множества кратного 4 + тривиальные числа, например 0.
Здравствуйте, RomikT, Вы писали:
RT>Здравствуйте, Vintik_69, Вы писали:
V_>>Здравствуйте, RomikT, Вы писали:
RT>>>Наверняка не самое короткое решение, но вроде работать будет.
V_>>Не работает для 2147483647
RT>По моему, несложно доказать что среди чисел от -2147483648 до 2147483647 невозможно давать правильный результат для всех чисел. RT>Как минимум, два числа окажутся неохваченными. Одно — просто потому, что нет числа +2147483648. А второе — ну так мир устроен
Здравствуйте, RomikT, Вы писали:
RT>Здравствуйте, deniok, Вы писали:
D>>
D>>Задача: написать функцию f(x), так, что f(f(x)) = -x. Разрешено использовать только
D>>целые числа. x — целочисленный аргумент (например, 32-битный).
RT>Наверняка не самое короткое решение, но вроде работать будет. RT>
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, deniok, Вы писали:
D>>
D>>Задача: написать функцию f(x), так, что f(f(x)) = -x. Разрешено использовать только
D>>целые числа. x — целочисленный аргумент (например, 32-битный).
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, deniok, Вы писали:
D>>
D>>Задача: написать функцию f(x), так, что f(f(x)) = -x. Разрешено использовать только
D>>целые числа. x — целочисленный аргумент (например, 32-битный).
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, deniok, Вы писали:
D>>
D>>Задача: написать функцию f(x), так, что f(f(x)) = -x. Разрешено использовать только
D>>целые числа. x — целочисленный аргумент (например, 32-битный).
D>>>Задача: написать функцию f(x), так, что f(f(x))= -x. Разрешено использовать только
D>>>целые числа. x — целочисленный аргумент (например, 32-битный).
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, deniok, Вы писали:
D>>
D>>Задача: написать функцию f(x), так, что f(f(x)) = -x. Разрешено использовать только
D>>целые числа. x — целочисленный аргумент (например, 32-битный).
Здравствуйте, Панда, Вы писали:
П>Подумал. В целом — задача неразрешимая. Потому что есть такое 32-битное x, для которого невозможно записать 32 битами -x. Это число, у которого все биты 1.
П>Если это число выкинуть из допустимых аргументов — то придумал. П>Продемонстрирую идею такой функции, если x может принимать значения от -3 до 3. П>