Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาผลรวมหลักตัวเลขจนเหลือ 1 หลักใน Python

สมมติว่าเรามีจำนวนบวก n บวกหลักตัวเลขซ้ำจนได้ตัวเลข 1 หลัก (Digital Root)

ตัวอย่าง: 9625 → 9+6+2+5=22 → 2+2=4 ผลลัพธ์ 4

ขั้นตอนการแก้ปัญหา (Recursive Digit Sum)

  1. หาก n < 10 คืนค่า n
  2. s = 0, l = floor(log10(n)) + 1 (จำนวนหลัก)
  3. วนลูป l รอบ:
    • s += n % 10; n //= 10
  4. เรียก 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