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

Inverse Factorial ใน Python

สมมติว่าเรามีตัวเลข a เราต้องหา n ที่ทำให้แฟกทอเรียลของ n (n!) เท่ากับ a ตามที่รู้ แฟกทอเรียล n = n * (n - 1) * (n - 2) * ... * 1 หากไม่มีจำนวนเต็ม n ใดๆ ให้คืนค่า -1

ตัวอย่าง

หากอินพุตคือ a = 120 ผลลัพธ์จะเป็น 5

ขั้นตอนการแก้ปัญหา

  1. i := 0, num := 1
  2. L := รายการใหม่
  3. ในขณะที่ i < a:
    • i := แฟกทอเรียลของ num
    • เพิ่ม i เข้าไปใน L
    • num := num + 1
  4. ถ้า a อยู่ใน L ให้คืนค่า (ดัชนีของ a ใน L) + 1
  5. อื่นๆ ให้คืนค่า -1

การใช้งาน

import math
class Solution:
    def solve(self, a):
        i, num = 0, 1
        L = []
        while i < a:
            i = math.factorial(num)
            L.append(i)
            num += 1
        if a in L:
            return L.index(a) + 1
        else:
            return -1

ob = Solution()
print(ob.solve(120))

อินพุต

120

เอาต์พุต

5