ओन्स और ट्वॉस के योग के साथ एक नंबर बनाने के तरीके

Aug 16 2020

मुझे आश्चर्य हो रहा है कि क्या किसी संख्या को केवल दो और दो का उपयोग करके योग करने के संभावित तरीकों को गिनने का कोई तरीका है

उदाहरण के लिए:

हमारे पास संख्या 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 amit Aug 17 2020 at 03:22

यदि तत्वों का क्रम मायने नहीं रखता है, जैसा कि टिप्पणियां बताती हैं (जैसे 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 बनाने के तरीकों की संख्या है।

another_CS_guy Aug 17 2020 at 05:36

जटिल गणितीय सूत्रों में जाने के बजाय, मैं डीपी दृष्टिकोण की सिफारिश करूंगा।


    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

RahulBhobe Aug 17 2020 at 18:07

केवल लोगों का उपयोग करके संख्या बनाने 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));