สมมติว่าเรามีจำนวนบวก n บวกหลักตัวเลขซ้ำจนได้ตัวเลข 1 หลัก (Digital Root)
ตัวอย่าง: 9625 → 9+6+2+5=22 → 2+2=4 ผลลัพธ์ 4
ขั้นตอนการแก้ปัญหา (Recursive Digit Sum)
- หาก
n < 10คืนค่าn s = 0,l = floor(log10(n)) + 1(จำนวนหลัก)- วนลูป
lรอบ:s += n % 10;n //= 10
- เรียก recursive
solve(s)
หมายเหตุ: สามารถคำนวณได้ O(1) ด้วยสูตร Digital Root: 1 + (n-1) % 9 (สำหรับ n>0)
ตัวอย่างโค้ด Python
import math
class Solution:
def solve(self, n):
if n < 10:
return n
s = 0
l = math.floor(math.log(n, 10) + 1)
while l > 0:
s += n % 10
n //= 10
l -= 1
return self.solve(s)
ob = Solution()
print(ob.solve(9625)) # Output: 4
อินพุต
9625
เอาต์พุต
4