কম্পিউটার

পাইথনে টি সময়ের পর ভাইরাসের প্রত্যাশিত বৃদ্ধি খুঁজে বের করার প্রোগ্রাম


ধরুন একটি বিপজ্জনক ভাইরাস আছে এবং সেটি দ্রুত বৃদ্ধি পাচ্ছে। একটি ফ্যাক্টর x দ্বারা ভাইরাস কোষের সংখ্যা বৃদ্ধির সম্ভাবনা 0.5 এবং একটি ফ্যাক্টর y দ্বারা ভাইরাস কোষের সংখ্যা বৃদ্ধির সম্ভাবনা 0.5। এখন যদি শুরুতে ভাইরাসের একটি একক কোষ থাকে, তাহলে টি সময়ের পর ভাইরাস কোষের প্রত্যাশিত সংখ্যা গণনা করুন। যদি উত্তরটি খুব বড় হয়, তাহলে মোড ফলাফল 10^9+7।

সুতরাং, যদি ইনপুটটি x =2, y =4, t =1 এর মত হয়, তাহলে আউটপুট 3 হবে, কারণ প্রাথমিকভাবে, ভাইরাসটির একটি মাত্র কোষ রয়েছে। x সময়ের পরে, সম্ভাব্যতা 0.5 সহ, এর আকার দ্বিগুণ হয় (x2) এবং অন্য 0.5 এর সম্ভাব্যতার সাথে, এর আকার 4 গুণ বৃদ্ধি পায়। এইভাবে, টি =1 এর পরে ভাইরাস কোষের প্রত্যাশিত সংখ্যা হল:0.5*2*1 + 0.5*4*1 =3।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • m =10^9+7
  • ফ্যাক্টর :=(x+y)/2 এর তল
  • res:=1
  • যখন t> 0, do
    • যদি t বিজোড় হয়, তাহলে
      • res :=(res*factor) mod m
    • factor :=(factor*factor) mod m
    • t :=t/2 এর তল
  • রিটার্ন রিটার্ন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

m=10**9+7
def solve(x, y, t):
   factor=(x+y)//2
   res=1
   while t > 0:
      if t % 2:
         res = (res*factor) % m
      factor = (factor*factor) % m
      t = t// 2

   return res

x = 2
y = 4
t = 1
print(solve(x, y, t))

ইনপুট

2, 4, 1

আউটপুট

3

  1. পাইথনে বহুভুজের এলাকা খুঁজে বের করার জন্য প্রোগ্রাম

  2. পাইথনে মার্জ করার পরে ন্যূনতম সংখ্যার রঙগুলি খুঁজে বের করার প্রোগ্রামটি থাকে

  3. পাইথনে K বৃদ্ধির পর দীর্ঘতম সমতুল্য সাবলিস্ট খুঁজতে প্রোগ্রাম

  4. পাইথন প্রোগ্রামে প্রাইম নম্বর খোঁজার জন্য বিভিন্ন পদ্ধতির বিশ্লেষণ