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

Python โปรแกรมคำนวณฟังก์ชันจากตัวแปรสุ่มตัวบ่งชี้จากเงื่อนไขที่กำหนด


สมมติว่าเรามีค่าสองค่า k และ n พิจารณาการเรียงสับเปลี่ยนแบบสุ่มโดยพูดว่า p1, p2, ..., pn ของ n ตัวเลขธรรมชาติ 1, 2, ..., n และคำนวณค่า F เพื่อให้ F =(X2+...+Xn-1)k โดยที่ Xi เป็นตัวแปรสุ่มตัวบ่งชี้ ซึ่งเป็น 1 เมื่อหนึ่งในสองเงื่อนไขต่อไปนี้ถือเป็น:pi-1 pi+1 หรือ pi-1> pi

ดังนั้น หากอินพุตเป็น k =1 n =1000 เอาต์พุตจะเป็น 1996/3

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน exp_factor() นี่จะใช้เวลา n,k
  • ถ้า k เท่ากับ 1 แล้ว
    • ผลตอบแทน(2*(n-2) , 3)
  • มิฉะนั้นเมื่อ k เท่ากับ 2 แล้ว
    • ผลตอบแทน (40*n^2 -144*n + 131, 90)
  • มิฉะนั้นเมื่อ k เท่ากับ 3 แล้ว
    • ผลตอบแทน (280*n^3 - 1344*n^2 +2063*n -1038,945)
  • มิฉะนั้นเมื่อ k เท่ากับ 4 แล้ว
    • ผลตอบแทน (2800*n^4 - 15680*n^3 + 28844*n^2 - 19288*n + 4263, 14175)
  • มิฉะนั้นเมื่อ k เท่ากับ 5 แล้ว
    • ผลตอบแทน (12320*n^5 - 73920*n^4 + 130328*n^3 - 29568*n^2 - 64150*n -5124, 93555)
  • ผลตอบแทน 1.0
  • จากวิธีหลัก ให้ทำดังต่อไปนี้ −
  • M :=n-2
  • p :=2.0/3
  • q :=1 - p
  • (num, den) :=exp_factor(n, k)
  • g :=gcd(num, den)
  • เศษส่วนกลับ (num/g) / (den/g)

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

from math import gcd

def exp_factor(n,k):
   if k == 1:
      return (2*(n-2),3)
   elif k == 2:
      return (40*n**2 -144*n + 131,90)
   elif k == 3:
      return (280*n**3 - 1344*n**2 +2063*n -1038,945)
   elif k == 4:
      return (2800*n**4 - 15680*n**3 + 28844*n**2 - 19288*n + 4263, 14175)
   elif k == 5:
      return (12320*n**5 - 73920*n**4 + 130328*n**3 - 29568*n**2 - 64150*n -5124, 93555)
   return 1.0

def solve(k, n):
   M = n-2
   p = 2.0/3
   q = 1 - p

   num, den = exp_factor(n,k)
   g = gcd(num, den)
   return str(int(num/g))+'/'+str(int(den/g))

k = 1
n = 1000
print(solve(k, n))

อินพุต

1, 1000

ผลลัพธ์

1996/3