4
用位异或分解没有数字0、3、7的数字
挑战 编写一个采用正十进制数的函数或程序,将其称为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(如果它们是该语言的标准库的一部分),或者可以通过该语言的法律包管理器进行安装。 该功能应该很快。输入100位数字时,在相当现代的计算机上运行应该不超过20秒,而输入10位数字时,应该不超过2秒。 功能/程序应支持至少100位数的输入。 如果该功能/程序仅支持不超过N <100位的整数,则最终得分将受到+ 10×(100 / N-1)字节的惩罚。这是为了鼓励高尔夫球手支持更大范围的数字,即使输入可能很冗长。 有上的呈现没有限制,只要它们是显然十进制表示的输入/输出。 如果内置整数类型不足,则该函数可能会输入和输出字符串/ BigInts。 输入可以来自功能参数,命令行参数或STDIN。 …