0055 利克瑞尔数
* * * *
拉格朗日计划
* * * *
利克瑞尔数

将47倒序后相加得$47+74=121$,是回文数。

并非所有数都能在这种操作下如此迅速地变为回文数。例如 $$349+943=1292 \Rightarrow 1292+2921=4213 \Rightarrow 4213+3124=7337.$$ 即,393需要经过三次迭代操作后才能得到回文数。

尽管尚未被证实,但有些数,例如196,可能无法通过该迭代操作变成回文数,这样的数被称为利克瑞尔数。已知小于一万的数,或者能在迭代五十次以内变成回文数,或者以当今的算力尚不能通过这一迭代操作将其变成回文数。

事实上10677是第一个需要五十次以上迭代才能变成回文数的数,这个回文数是4668731596684224866951378664,共需53次迭代。

注意有些回文数本身也是利克瑞尔数,4995是第一个这样的例子。

求小于一万的利克瑞尔数的个数。

本题难度:



解答

暴力搜索即得结果是$249$。

注:OEIS A023108中提供的结果是246。原因在于使用的定义不同,本题中必须至少进行一次迭代,而OEIS A023108的记录中认为利克瑞尔数不包括本身已经是回文数的数。

def isLychrel(n):
  n+=int(str(n)[::-1])
  i=1
  while i < 51 and str(n)!=str(n)[::-1]:
      n+=int(str(n)[::-1])
      i+=1
  return i==51

print sum(isLychrel(n) for n in range(1,10000))