Виклик
Напишіть функцію або програму, яка приймає додатне десяткове число, назвіть її A і виведіть два додатних числа, B і C , таким чином:
- A == B bitxor C
- B і C не повинні містити жодного з цифр 0, 3 або 7 у своєму десятковому зображенні.
Приклади
>>> decompose(3)
1, 2
>>> decompose(7)
1, 6
>>> decompose(718)
121, 695
>>> decompose(99997)
2, 99999
>>> decompose(4294967296)
4294968218, 922
>>> decompose(5296080632396965608312971217160142474083606142654386510789497504098664630388377556711796340247136376)
6291484486961499292662848846261496489294168969458648464915998254691295448225881546425551225669515922,
1191982455588299219648819556299554251659915414942295896926425126251962564256469862862114191986258666
Оскільки розкладання не є унікальним, вашій функції / програмі не потрібно виводити такі самі результати, як у наведених прикладах.
Дуже детальні правила
Подання повинні бути у вигляді повноцінної функції або програми .
import
Заяви ж зараховуються остаточний рахунок.Ви можете припустити, що вхід A завжди містить принаймні цифру 0, 3 або 7.
Ви можете припустити, що декомпозиція існує завжди.
Ви можете використовувати BigInt, якщо вони є частиною стандартних бібліотек мови або можуть бути встановлені через де-юре менеджер пакунків мови.
Функція повинна бути швидкою. Це повинно зайняти не більше 20 секунд , щоб працювати на досить сучасний комп'ютер , коли годували 100-значне число, і не більше ніж на 2 секунди при подачі на 10-значне число.
Функція / програма повинна підтримувати введення щонайменше до 100 цифр .
- Якщо функція / програма може підтримувати лише цілі числа до N <100 цифр, до остаточного показника буде штраф + 10 × (100 / N - 1) байт. Це спонукає гольфістів підтримувати ширший діапазон номерів, навіть якщо імпорт може бути багатослівним.
Немає обмежень щодо подання входів / виходів, якщо вони чітко відображаються в десятковому зображенні.
- Функція може вводити та виводити рядки / BigInts, якщо вбудованих цілих типів недостатньо.
- Вхід може надходити з параметра функції, аргументу командного рядка або STDIN.
- Функція може повернути результат або просто надрукувати результат безпосередньо в STDOUT.
- Однак підписане переповнення у вході / виході заборонено.
- Орієнтовні відповіді не приймаються, введення / виходи повинні бути точними.
Оцінка балів
Це код-гольф . Найкоротше рішення виграти в байтах.
Існує штраф, якщо програма може підтримувати лише цифри менше 100 цифр:
- 64-бітні цілі числа (19 цифр) = +42 байти
- 63-бітні цілі числа (18 цифр) = +45 байт
- 53-бітні цілі числа (15 цифр) = +56 байт
- 31/32-бітні цілі числа (9 цифр) = +101 байт