इनपुट के रूप में तीन नंबर 'ए', 'बी' और 'सी' दिए गए हैं। लक्ष्य n सेकंड के बाद 'a', 'b' और 'c' की गिनती/मान ज्ञात करना है ताकि प्रजनन की दर इस प्रकार हो:-
- हर a हर 2 सेकंड के बाद b में बदल जाता है
- हर b हर 5 सेकंड के बाद c में बदल जाता है
- हर c हर 12 सेकंड के बाद 2 a में बदल जाता है।
आइए उदाहरणों से समझते हैं।
उदाहरण के लिए
इनपुट - n_seconds =62 a =1 b =1 c =1
आउटपुट - दी गई प्रजनन दर के लिए n सेकंड के बाद की गणना है:0
दी गई प्रजनन दर के लिए n सेकंड के बाद b की संख्या है:33
दी गई प्रजनन दर के लिए n सेकंड के बाद c की संख्या है:1
स्पष्टीकरण - 60 सेकंड के बाद, a, 32, b =0, c =0 होगा।
2 और सेकंड के बाद, सभी b, c, c=1 हो जाएंगे। सभी a बन जाते हैं b, b=33.
इनपुट - n_seconds =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 सेकंड के बाद
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
सेकंड का एलसीएम 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 के गुणकों के रूप में सेकंड के लिए ऊपर के रूप में ए की गणना करें। गैर-गुणकों के लिए, निकटतम एकाधिक अस्थायी की गणना करें और फिर अस्थायी + 1 से इनपुट सेकंड तक जाएं और मॉड 2, 5 या 12 का उपयोग करके गणना करें।
- इनपुट के रूप में नंबर ए, बी और सी लें।
- n_seconds समय के रूप में सेकंड में लें।
- फ़ंक्शन प्रजनन_रेट(int n_seconds, int a, int b, int c) सभी पैरामीटर लेता है और दिए गए प्रजनन दर के लिए n सेकंड के बाद a, b &c की गिनती प्रिंट करता है।
- तापमान =n_seconds / 60 को n_seonds से नीचे 60 के गुणज के रूप में लें।
- सूत्र में दिए गए अनुसार a =(int) pow(32, temp) की गणना करें। (एक अस्थायी )
- अब 60 से कम या n_seconds के बराबर के निकटतम गुणक के लिए अस्थायी =60 * अस्थायी अद्यतन करें।
- अब for लूप का उपयोग करके i=temp+1 से i=n_seconds पर जाएं।
- यदि संख्या i 2 का गुणज है तो a और a को 0 से जोड़कर अपडेट करें।
- यदि संख्या i 5 का गुणज है तो b और b को 0 से जोड़कर c को अपडेट करें।
- यदि संख्या i 12 का गुणज है तो a को 2c और c को 0 से जोड़कर अपडेट करें।
- लूप के अंत में, 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