检测给定范围内的回文乘积。
回文数是指将其数字顺序颠倒后仍然保持不变的数字。例如,121是回文数,而112不是。
给定一个数字范围,找出该范围内两个数相乘所得的最大和最小回文数。
你的解答应返回最大和最小的回文数,以及它们在范围内的因数。如果最大或最小的回文数在范围内有多对因数,则返回所有因数对。
给定范围[1, 9](包含两端)……
再给定该范围内所有可能的乘积列表:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]
回文乘积都是一位数(在本例中):
[1, 2, 3, 4, 5, 6, 7, 8, 9]
最小的回文乘积是1。
它的因数是(1, 1)。
最大的回文乘积是9。
它的因数是(1, 9)和(3, 3)。
给定范围[10, 99](包含两端)……
最小的回文乘积是121。
它的因数是(11, 11)。
最大的回文乘积是9009。
它的因数是(91, 99)。
朴素的解法在通过涉及四位数的因数的测试时可能要花很长时间,很可能超过在线测试运行器所分配的时间限制。 你可能需要在本机完成这道练习,才能对自己的解法做性能分析。 这道练习有高效的解法,但都很有难度。