ইনপুট হিসাবে তিনটি সংখ্যা 'a', 'b' এবং 'c' দেওয়া হয়েছে। লক্ষ্য হল n সেকেন্ডের পর 'a', 'b' এবং 'c'-এর গণনা/মান খুঁজে বের করা যাতে প্রজননের হার হয়:-
- প্রতিটি ২ সেকেন্ড পর পর b এ পরিবর্তন হয়
- প্রতিটি b প্রতি 5 সেকেন্ড পরে c এ পরিবর্তিত হয়
- প্রতিটি c প্রতি 12 সেকেন্ড পর পর 2 a এ পরিবর্তিত হয়।
আসুন উদাহরণ দিয়ে বোঝা যাক।
উদাহরণস্বরূপ
ইনপুট - n_সেকেন্ড =62 a =1 b =1 c =1
আউটপুট - প্রদত্ত প্রজনন হারের জন্য n সেকেন্ডের পরের গণনা হল:0
প্রদত্ত প্রজনন হারের জন্য n সেকেন্ডের পর b এর গণনা হল:33
প্রদত্ত প্রজনন হারের জন্য n সেকেন্ডের পরে c এর গণনা হল:1
ব্যাখ্যা - 60 সেকেন্ড পর, a's হবে 32, b =0, c =0।
আরও 2 সেকেন্ড পরে, সমস্ত b হয়ে যাবে c, c=1। সব a হয়ে যায় b, b=33.
ইনপুট - n_সেকেন্ড =20 a =1 b =1 c =1
আউটপুট - প্রদত্ত প্রজনন হারের জন্য n সেকেন্ডের পরের গণনা হল:0
প্রদত্ত প্রজনন হারের জন্য n সেকেন্ডের পর b এর গণনা হল:0
প্রদত্ত প্রজনন হারের জন্য n সেকেন্ডের পরে c এর গণনা হল:6
ব্যাখ্যা
1 সেকেন্ড :- a=1, b=1, c=1
2 সেকেন্ড :- a=0, b=2(1+1), c=1 → a থেকে b 2 সেকেন্ড পরে
4 সেকেন্ড :- a=0, b=2 , c=1 → a থেকে b 2 সেকেন্ড পরে
5 সেকেন্ড :- a=0, b=0 , c=3 (1+2) → b থেকে c 5 সেকেন্ড পরে
6 সেকেন্ড :- a=0, b=0 , c=3 → a থেকে b 2 সেকেন্ড পরে
8 সেকেন্ড :- a=0, b=0 , c=3 → a থেকে b 2 সেকেন্ড পরে
10 সেকেন্ড :- a=0, b=0 , c=3 → b থেকে c 5 সেকেন্ড পরে
12 সেকেন্ড :- a=6 (0+2*3), b=0 , c=0 → c থেকে 2a 12 সেকেন্ড পরে
14 সেকেন্ড :- a=0, b=6(0+6), c=0 → a থেকে b 2 সেকেন্ড পরে
15 সেকেন্ড :- a=0, b=0 , c=6(0+6) → b থেকে c 5 সেকেন্ড পরে
16 সেকেন্ড :- a=0, b=0 , c=6 → a থেকে b 2 সেকেন্ড পরে
18 সেকেন্ড :- a=0, b=0 , c=6 → a থেকে b 2 সেকেন্ড পরে
20 সেকেন্ড :- a=0, b=0 , c=6 → b থেকে c 5 সেকেন্ড পরে
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
সেকেন্ডের LCM হবে 60 ( 2, 5, 12)। সুতরাং প্রতি 60 সেকেন্ডের পর a, b এবং c-এর পরিবর্তনগুলি হবে :
60 সেকেন্ড → a=32, b=0, c=0
120 সেকেন্ড → a=32*32 , b=0, c=0
180 সেকেন্ড → a=32*32*32 , b=0, c=0.
60 এর গুণিতক হিসাবে সেকেন্ডের জন্য উপরের হিসাবে a এর গণনা করুন। নন-মাল্টিপলের জন্য, নিকটতম একাধিক টেম্প গণনা করুন এবং তারপর টেম্প+1 থেকে ইনপুট সেকেন্ডে যান এবং মোড 2, 5 বা 12 ব্যবহার করে গণনা করুন।
- ইনপুট হিসাবে a, b এবং c সংখ্যাগুলি নিন।
- সেকেন্ডে সময় হিসাবে n_সেকেন্ড নিন।
- ফাংশন রিপ্রোডাকশন_রেট(int n_seconds, int a, int b, int c) সমস্ত প্যারামিটার নেয় এবং প্রদত্ত প্রজনন হারের জন্য n সেকেন্ড পরে a, b এবং c এর গণনা প্রিন্ট করে।
- temp =n_seonds / 60 কে n_seonds এর নিচে 60 এর গুণিতক হিসাবে নিন।
- সূত্রে দেওয়া হিসাবে a =(int) pow(32, temp) গণনা করুন। ( a temp )
- এখন 60 কম বা n_সেকেন্ডের সমান কাছাকাছি গুণিতকের জন্য temp =60 * temp আপডেট করুন।
- এখন i=temp+1 থেকে i=n_seconds পর্যন্ত লুপ ব্যবহার করে অতিক্রম করুন।
- যদি i সংখ্যাটি 2 এর একাধিক হয় তাহলে 0 এর সাথে a এবং a যোগ করে b আপডেট করুন।
- যদি i সংখ্যাটি 5 এর একাধিক হয় তাহলে 0 এর সাথে b এবং b যোগ করে c আপডেট করুন।
- যদি i সংখ্যাটি 12 এর একাধিক হয় তাহলে 0 এর সাথে 2c এবং c যোগ করে a আপডেট করুন।
- ফর লুপের শেষে, a, b এবং c এর চূড়ান্ত মান প্রিন্ট করুন।
উদাহরণ
#include <bits/stdc++.h> using namespace std; void reproduction_rate(int n_seconds, int a, int b, int c) { int temp = n_seconds / 60; a = (int) pow(32, temp); temp = 60 * temp; for (int i = temp + 1; i <= n_seconds; i++) { if (i % 2 == 0) { b = b + a; a = 0; } if (i % 5 == 0) { c = c + b; b = 0; } if (i % 12 == 0) { a = a + (2 * c); c = 0; } } cout << "Count of a after n seconds for given reproduction rate is: " << a << "\n"; cout << "Count of b after n seconds for given reproduction rate is: " << b << "\n"; cout << "Count of c after n seconds for given reproduction rate is: " << c; } int main() { int n_seconds = 72; int a = 2; int b = 1; int c = 1; reproduction_rate(n_seconds, a, b, c); return 0; }
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেআউটপুট
Count of a after n seconds for given reproduction rate is: 68 Count of b after n seconds for given reproduction rate is: 0Count of c after n seconds for given reproduction rate is: 0