前段时间刷到力扣 202 题:欢乐数,虽然是一道简单题,但是题目和解题思路都非常有意思。
闲来无事在网上搜索一下类似的题目,发现在 hackerank 有一道类似的题目,要求 10^k 以内的非欢乐数的个数,k 最大可以到 200.
这个数据规模用力扣 202 题中思路应该是解决不了的,大家有什么好的思路?
1
LRvx 2021-03-01 20:40:15 +08:00
有人给了一个很好的数位 dp 解法: https://euler.stephan-brumme.com/92/
|
2
metaquant 2021-03-02 15:39:43 +08:00
设 f(n,k)表示 10^k 以内的数字其各位数平方之和等于 n 的个数, 则有:
![]( https://images-1252829441.cos.ap-guangzhou.myqcloud.com/img/20210302153707.png) 对于 10^k 以内的数字,其最大平方和为 81k,则只需要求出 81k 以内的快乐数,对每个快乐数,使用 f(n,k )计算 k 位数内平方和等于 n 的个数,再加总,就是题目中要求的。 更详细的分析参见: https://pe.metaquant.org/pe092.html |