মান লেট একটি বিপজ্জনক ভাইরাস আছে যা দ্রুত বৃদ্ধি পায়। ভাইরাস কোষের সংখ্যা x ফ্যাক্টর দিয়ে বৃদ্ধি পাওয়ার প্রোবাবিলিটি 0.5 এবং y ফ্যাক্টর দিয়ে বৃদ্ধি পাওয়ার প্রোবাবিলিটিও 0.5। এখন যদি শুরুতে ভাইরাসের একক কোষ থাকে, তবে t সময় পর ভাইরাস কোষের প্রত্যাশিত সংখ্যা ক্যালকুলেট করুন। যদি উত্তর খুব বড় হয়, তবে রেজাল্ট mod 10^9+7 করুন।
তাহলে, যদি ইনপুট হয় x = 2, y = 4, t = 1, তবে আউটপুট হবে 3, কারণ শুরুতে ভাইরাসের শুধু একক কোষ। x সময় পর, প্রোবাবিলিটি 0.5 দিয়ে এর আকার ডাবল হয় (x2) এবং, অন্য 0.5 প্রোবাবিলিটিতে এর আকার ৪ গুনা বৃদ্ধি পায়। অতএব, সময় t = 1 পর ভাইরাস কোষের প্রত্যাশিত সংখ্যা: 0.5*2*1 + 0.5*4*1 = 3।
এটি সমাধান করতে, আমরা নিচের পদক্ষেপগুলো অনুসরণ করব −
- m = 10^9+7
- factor := floor of (x+y)/2
- res:= 1
- যখন t > 0, করুন
- যদি t বিজোড় হয়, তবে
- res :=(res*factor) mod m
- factor :=(factor*factor) mod m
- t := floor of t/2
- যদি t বিজোড় হয়, তবে
- res রিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন −
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