You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求解满足递归数位和约束的正整数n

求解满足递归数位和约束的正整数n

咱们来解决这个问题:给定正整数$n$,用$S(n)$表示$n$的十进制数位之和,找出所有满足等式$n + S(n) + S(S(n)) = 1000$的正整数$n$。

第一步:缩小$n$的范围

首先,数位和$S(n)$有个关键性质:对于$k$位数$n$,$S(n) \leq 9k$。咱们先判断$n$的位数:

  • 如果$n$是四位数,最小的四位数是1000,代入等式得$1000 + 1 + 1 = 1002 > 1000$,更大的四位数只会让左边更大,所以$n$不可能是四位数。
  • 如果$n$是三位数,最大的数位和$S(n)$是999的数位和27,而$S(S(n))$最大是27的数位和9,所以$S(n)+S(S(n)) \leq 27+9=36$。由此可得$n \geq 1000 - 36 = 964$。

所以$n$的范围锁定在964到999之间的三位数

第二步:逐个范围验证

接下来咱们把$n$写成$900+10a+b$($a$是十位数字,$b$是个位数字),代入等式展开:
$$
(900+10a+b) + (9+a+b) + S(9+a+b) = 1000
$$
化简后得到:
$$
11a + 2b + S(9+a+b) = 91
$$

咱们分情况讨论十位数字$a$的可能值:

  • 当$a=9$时:$11*9=99$,$99 + 2b + S(18+b) \geq 99 > 91$,显然不可能满足等式,无解。
  • 当$a=8$时:$11*8=88$,需要$2b + S(17+b)=3$。$2b$是非负偶数,$S(17+b)$最小是8(当$b=0$时,17的数位和是8),$8>3$,无解。
  • 当$a=7$时:$11*7=77$,需要$2b + S(16+b)=14$。遍历$b=0$到9:
    • $b=0$:$0+7=7≠14$;$b=1$:$2+8=10≠14$;$b=2$:$4+9=13≠14$;$b≥3$时,$2b≥6$,$S(16+b)≥10$(比如$b=3$时19的数位和是10),$6+10=16>14$,无解。
  • 当$a=6$时:$11*6=66$,需要$2b + S(15+b)=25$。$b≥4$(因为$n≥964$),$2b≤18$($b≤9$),$S(15+b)$最大是6(当$b=9$时24的数位和是6),$18+6=24<25$,无解。

结论

遍历所有可能的$n$范围后,没有找到满足$n + S(n) + S(S(n)) = 1000$的正整数$n$。

备注:内容来源于stack exchange,提问作者Jullius Silva

火山引擎 最新活动