Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में दो समीकरणों का प्रयोग करते हुए आवर्ती और लुप्त संख्या ज्ञात कीजिए

इस समस्या में, हमें आकार N का एक सरणी arr[] दिया जाता है। इसमें 1 से N तक के पूर्णांक मान होते हैं। और श्रेणी से एक तत्व x गायब है जबकि सरणी में एक तत्व y दोगुना होता है। हमारा काम है दो समीकरणों का उपयोग करके दोहराई जाने वाली और लुप्त संख्या का पता लगाना

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

arr[] = {1, 2 , 3, 3}

आउटपुट

missing = 4, double = 3

समाधान दृष्टिकोण

समस्या को हल करने की एक विधि दो मानों x और y के लिए दो समीकरणों का उपयोग कर रही है। फिर x और y का मान प्राप्त करने के लिए समीकरण को हल करें।

आइए देखें कि समीकरण और उन्हें कैसे बनाया जाता है,

सरणी के तत्वों के योग में पहली N प्राकृतिक संख्या का योग होता है जिसमें एक तत्व अतिरिक्त होता है और एक गायब होता है।

arrSum = Sum(N) - x + y
y - x = arrSum - sum(N)

यह समीकरण 1 है।

अब, वर्ग योग लेते हैं। इसी तरह,

arrSumsq = sqSum(N) - x2 + y2
(y - x)*(y + x) = arrSumSq - sqSum(N)

समीकरण 1 का उपयोग करना,

x + y = (arrSumSq - sqSum(N)) / (arrSum - sum(N))

दोनों समीकरण जोड़ें जो हमें मिलते हैं

y = (arrSumSq - sqSum(N)) / (arrSum - sum(N)) + (arrSum - sum(N)) / 2

फिर y के मान का उपयोग करते हुए, हम x का उपयोग कर पाएंगे

x = y - (arrSum - sum(N))

हमारे पास

. के लिए सूत्र है
sum(N) = n*(n-1)/2
sqSum(N) = n*(n+1)*(2n + 1)/ 6

arrSum सरणी के सभी तत्वों का योग है

arrSumSq सरणी के सभी तत्वों के वर्गों का योग है।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,

#include <iostream>
using namespace std;
void findExtraAndMissingVal(int arr[], int n){
   int sumN = (n * (n + 1)) / 2;
   int sqSumN = (n * (n + 1) * (2 * n + 1)) / 6;
   int arrSum = 0, arrSqSum = 0, i;
   for (i = 0; i < n; i++) {
      arrSum += arr[i];
      arrSqSum += (arr[i]* arr[i]);
   }
   int y = (((arrSqSum - sqSumN) / (arrSum - sumN)) + sumN - arrSum) / 2;
   int x = arrSum - sumN + y;
   cout<<"The missing value from the array is "<<x;
   cout<<"\nThe value that occurs twice in the array is "<<y;
}
int main() {
   int arr[] = { 1, 2, 2, 3, 4 };
   int n = sizeof(arr)/sizeof(arr[0]);
   findExtraAndMissingVal(arr, n);
   return 0;
}

आउटपुट

The missing value from the array is 2
The value that occurs twice in the array is 5

  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

  1. C++ . का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात कीजिए

    बिंदु X और Y के बीच मध्यवर्ती ट्रेन स्टेशनों की संख्या n है। गिनें कि अलग-अलग तरीकों से ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई भी दो स्टेशन एक दूसरे के बगल में नहीं हैं। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या का पता लगाने के लिए हर संभव तरीके की व्याख्या क

  1. C++ . का उपयोग करके एक फ़ुटबॉल पर पेंटागन और हेक्सागोन्स की संख्या ज्ञात करें

    जैसा कि हम सभी जानते हैं, पेंटागन और षट्भुज फुटबॉल के समान रूप से आवश्यक अंग हैं। ये आकार एक पूर्ण गोलाकार आकृति बनाने के लिए एक पहेली की तरह एक साथ फिट होते हैं। तो यहाँ हमारे पास एक फ़ुटबॉल है, जिसमें हमें षट्भुज और पेंटागन खोजने हैं। हम समस्या को आसानी से हल करने के लिए यूलर विशेषता का उपयोग क