一点一点前进...

0%

欧拉项目 | 145题 | 可逆数的数量

145题链接

有这样一些数n,和所以数字逆着写的数reverse(n)之和的所有数字都是奇数。比如36+63=99,409+904=1313等等,这些数我们称之为可逆数。有一个限制条件就是开头不能是0。
问题是,小于十亿(1,000,000,000)的数中有多个可逆数。

这道题可以通过分类讨论来解决。
首先n的长度是奇数和偶数明显是两类,因为这意味着有没有正好居于中间的数,对于奇数长度来说,有,且反过来还是该数字。

我们先来考虑长度是偶数的时候。

长度为2的时候,不妨把该数写作AB,其逆就是BA。以A+B是否大于等于10来讨论。
大于等于10的情况,不妨令A+B=1C,那么AB+BA=1(C+1)C,C和C+1奇偶性必然不同,不可能数字都是奇数。
小于10的情况,那么A+B是奇数。A是偶数,可选2,4,6,8,B是奇数,可选1,3,5,7,9,之和小于10的情况一共10种可能性。反之,A是奇数,B是偶数,也是10种。
所以长度为2的可逆数一共20个。

长度为4的时候,该数可写作ABCD,其逆就是DCBA。以A+D是否大于等于10来讨论。
大于等于10的情况,不妨令A+B=1E。若B+C大于等于10,和最后一位是E,右起第四位是1+E,不可能都是奇数;若B+C小于10,不能是9,否则和的右起第二位是0,不满足题意,如果是其他奇数,右起第二位和1+B+C,而右起第三位是B+C,也不可能同时是奇数。
小于10的情况,A和D的取值可能性有20种,中间的BC退化为长度为2的情况,取值的可能性有30种(偶数可以为0,因为不打头了),利用乘法原则,共有600个可逆数。
所以长度为4的可逆数一共600个。

长度为6的时候,该数可以写作ABCDEF,其逆就是FEDCBA。以A+F是否可以大于等于10来讨论。
大于等于10的情况,原理和4位时一样,B+E不能大于等于10。能小于10吗?为了保证B+E得到的值和E+B+1得到的值一样,那么C+D就要大于10。但是E+B不进位,而D+C进位,导致右起3,4位一定不能同时是奇数。
小于10的情况,中间4个数回到了上一种情况,所以可能性是20*30*30=18,000。
所以长度为6的可逆数一共是18,000个。

长度为8的时候,该数可以写作ABCDEFGH,其逆就是HGFEDCBA。同样,以A+H是否可以大于等于10来讨论。
在大于等于10的情况下,原理同上,B+G不能大于等于10,那么B+G就只能小于10了。同上,C+F就要大于等于10。为了使得中间两位的奇偶性一致,那么E+D要大于10,结果就是右起第三位数字是C+F模10(因为B+G小于10),而右起第六位数字是C+F+1模10,这俩不可能同时是奇数。
小于10的情况,中间六个数字回到了上一种情况,所以可逆数是20*30*30*30=540,000。
所以长度为8的可逆数一共是540,000个。

现在来讨论n的长度为奇数。
如果长度是1,反过来是其本身,那么和是偶数,不符合题意。

长度是3,可写作ABC,可逆数是CBA。中间数字的和是偶数,那么A+C必须大于10,为了右起第一位和第三位奇偶性相同,那么2B不能进位,所以B要小于等于4,那么B有五种可取值;我们现在讨论A和C,A是奇数1,3,5,7,9,C是偶数2,4,6,8,其和大于10的可能性有10中可能性,A是偶数C是奇数也有10种,那么可逆数是5*(10+10)=100。

长度是5时,可写作ABCDE,可逆数是EDCBA。中间是2C,所以B+D是大于等于10的,右起第一位是E+A,但是右起第五位是A+E+1,不可能同时是奇数,所以n的长度不可能是5。

长度为7时,可写作ABCDEFG,可逆数时GFEDCBA。中间是2D,所以C+E时大于等于10的。根据前面的分析,B+F必须小于10;进而2D要小于10。右起第六位会接受来此C+E的进位,那么右起第二位也必须接受一个进位,所以A+G必须大于10。2D小于10得出D有5种可能性,A+G大于10且和为奇数共有20种可能性,C+E大于10且和为奇数也有20种,B+F小于10且为偶数的可能性有25种。所以可逆数是5*20*20*25=50,000。

长度为9的时候,可写作ABCDEFGHI,其可逆数是IHGFEDCBA。由前面的分析可知D+F要大于等于10,那么为了让右起第三位G+C和右起第七位C+G同时为奇数,那么H+B也必须大于10,那么A+I得到B+H的进位,无法和右起第一位I+A同奇偶,矛盾,所以长度不能是9。

综上,小于十亿的可逆数是608720个。