ओन्स और ट्वॉस के योग के साथ एक नंबर बनाने के तरीके
मुझे आश्चर्य हो रहा है कि क्या किसी संख्या को केवल दो और दो का उपयोग करके योग करने के संभावित तरीकों को गिनने का कोई तरीका है
उदाहरण के लिए:
हमारे पास संख्या 10 है। 10 नंबर को इसके द्वारा सम्मिलित किया जा सकता है:
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2
2 + 2 + 2 + 2 + 2
etc...
एडवांस में आप सभी को धन्यवाद!
जवाब
यदि तत्वों का क्रम मायने नहीं रखता है, जैसा कि टिप्पणियां बताती हैं (जैसे 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2
कि समान है 2 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
), यह केवल संक्षेप में तत्वों की संख्या चुन रहा है, जो 5 से 10 के बीच कहीं भी हो सकते हैं। तत्वों की संख्या चुने जाने के बाद, आप जानते हैं कि उनमें से कितने को 1s होना है और उनमें से कितने को 2s होना है: x तत्वों के लिए, 10-x 2s हैं, और बाकी 1s हैं।
चूंकि चुनने के लिए 6 नंबर हैं, यह 10 बनाने के तरीकों की संख्या है।
जटिल गणितीय सूत्रों में जाने के बजाय, मैं डीपी दृष्टिकोण की सिफारिश करूंगा।
int arr[N+1]; // Represents no. of ways to produce a number at index 1
// Like arr[5] is no. of ways to produce number 5
for(int i=0;i<=N;i++) {
arr[i] = 1; // As all 1s
}
for(int i=2;i<=N;i++) {
// if we add 2 now, check for no. of ways i-2 can be made,
// add it to current arr[i] value.
arr[i] += arr[i-2];
}
cout<< (arr[N]); // print
केवल लोगों का उपयोग करके संख्या बनाने 1
के तरीकों की संख्या = कम से कम एक दो = floor(n/2)
कुल = का उपयोग करके संख्या बनाने के तरीकों की संख्या1 + floor(n/2)
देखें javascript
कोड स्निपेट नीचे:
let numWays = n => 1 + Math.floor(n/2);
for (let i=1; i<=20; i++)
console.log("Number of ways to create " + i + " is: " + numWays(i));