欢乐数(长)  
    |   
               
              
                不断取一个自然数十进制表达下各位数的平方和,若最后的结果是1(另一种可能是进入一个不含1的循环),就称这样的数为欢乐数。
                
                例如19是欢乐数,相应的计算过程如下:
                \begin{align*}
                1^2 + 9^2 =& 82, \\
                8^2 + 2^2 =& 68, \\
                6^2 + 8^2 =& 100, \\
                1^2 + 0^2 + 0^2 =& 1. \\
                \end{align*}
              打印1到1000之间的欢乐数,每个数单独一行。
  
                       
               |  
              
              本题难度: 
              
               
  
             |  
           
          
          
          
            
             解答  
    |   
             
            用缓存作记忆化搜索更高效,但直接迭代计算的代码更短。
   
            最终代码有四行。
  
            代码长度:86字节 vs. 全站第一:72字节。
  
              
for i in range(1,1001):
  n=i
  while n>6:n=sum(int(j)**2for j in str(n))
  n<2==print(i)
 
               |  
           
         
        
            
            |    |