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

C++ में दी गई संख्या को कम करने के लिए आवश्यक संक्रियाओं की संख्या की गणना करें


हमें एक धनात्मक पूर्णांक K और एक सरणी Ops[] दी गई है जिसमें पूर्णांक हैं। लक्ष्य K को कम करने के लिए आवश्यक संचालन की संख्या का पता लगाना है ताकि यह 0 से कम हो जाए। संचालन हैं -

  • पहला ऑपरेशन K + Ops[0] है, पहला तत्व K में जोड़ा गया है

  • 1 के बाद Ops[i] को K से K<0 तक जोड़ें। जहां सूचकांक I एक गोलाकार तरीके से बदलता रहता है। 0<=i

नोट - Ops[i] को K<0 तक जोड़ते रहें। यदि मैं अंतिम तत्व Ops[N-1] तक पहुँचता हूँ तो फिर से i=0 से शुरू करें। एक गोलाकार तरीके से।

हम पहले जांचेंगे कि क्या सरणी Ops[]>0 के सभी तत्वों का योग है। यदि हाँ तो K को कभी भी कम नहीं किया जा सकता है। वापसी -1। अन्यथा Ops[i] को K में जोड़ते रहें और जांचें कि क्या K<0 यदि हां लूप तोड़ता है।

जोड़ने के बाद संचालन की वृद्धि संख्या:K+Ops[i].

आइए उदाहरणों से समझते हैं।

इनपुट -

ops[]= { -4,2,-3,0,2 }, K=5

आउटपुट − संख्या घटाने के लिए आवश्यक संचालनों की संख्या − 3

स्पष्टीकरण - के 5 है। संचालन हैं -

1. K+ops[0]= 5+(-4) = 1
2. K+ops[1]= 1+2 = 3
3. K+ops[2]= 3+(-3) = 0

इनपुट -

ops[]= { 5,5,3,-2 }, K=10

आउटपुट - K को कम नहीं किया जा सकता !!

स्पष्टीकरण −K 10 है। संचालन हैं -

1. K+ops[0]= 10+5= 15
2. K+ops[1]= 15+5= 20
3. K+ops[2]= 20+3= 23
4. K+ops[3]= 23+-2= 22
5. K+ops[0]= 22+5= 27
6. K+ops[1]= 27+5=32
7. …………………

यदि हम जल्दी से ऑप्स के सभी तत्वों के योग की जांच करें []=5+5+3-2=11 और 11+10 हमेशा +ve होता है। अतः K को −0 तक कम नहीं किया जा सकता।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • हम एक पूर्णांक सरणी लेते हैं ops[] यादृच्छिक पूर्णांकों के साथ आरंभ किया गया।

  • चर K को धनात्मक मान दिया गया है।

  • फ़ंक्शन काउंटऑपरेशंस (int op [], int n, int k) K सरणी Ops [] और इसकी लंबाई को मापदंडों के रूप में लेता है और K को 0 से कम करने के लिए आवश्यक रिटर्न ऑपरेशन करता है।

  • संचालन की प्रारंभिक संख्या को गिनती में 0 के रूप में लें।

  • ops [] के तत्वों के योग की गणना करें और योग में संग्रहीत करें। अगर योग> =0 तो -1 लौटें।

  • यदि नहीं तो k>0 ऑप्स [i] और इंक्रीमेंट काउंट जोड़ते रहें। यदि k<0 लूप को तोड़ता है।

  • परिणाम के रूप में वापसी की गिनती।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
long countOperations(int op[], int n, int k){
   long count = 0;
   int sum=0;
   int i=0;
   for(int i=0;i<n;i++){
      sum+=op[i];
   }
   if(sum-k>=0)
      { return -1; } //number k can never be reduced as sum-k is always positive or 0
   while(k>0){
      for(i=0;i<n;i++){
         if(k>0){
            count++;
            k+=op[i];
         }
         else
            { break; }
      }
   }
   return count;
}
int main(){
   int Ops[] = { 1,-1,5,-11};
   int len= sizeof(Ops) / sizeof(Ops[0]);
   int K=10;
   long ans=countOperations(Ops,len,K);
   if(ans==-1)
      { cout<<"K cannot be reduced!!"; }
   else
      { cout<<"Number of operations : "<<ans; }
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Number of operations : 8

  1. C++ में दिए गए आकार के आयत के अंदर संभव रंबी की संख्या की गणना करें

    हमें ऊंचाई X चौड़ाई के रूप में आयामों के साथ एक आयत दिया गया है। आयत को एक 2D निर्देशांक प्रणाली पर दर्शाया गया है जिसमें बिंदु (0,0) पर बाएँ-निचले कोने हैं। तो लक्ष्य इस आयत के अंदर संभव रोम्बी की संख्या को गिनना है ताकि ये सभी शर्तें पूरी हों - समचतुर्भुज का क्षेत्रफल 0 से अधिक होता है। समचत

  1. C++ में दिए गए संक्रियाओं की न्यूनतम संख्या का उपयोग करके किसी संख्या m को n में बदलें

    इस ट्यूटोरियल में, हम दिए गए ऑपरेशनों की न्यूनतम संख्या का उपयोग करके किसी संख्या को m से n में बदलने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें दो पूर्णांक m और n दिए जाएंगे। हमारा काम दिए गए संक्रियाओं का कम से कम बार उपयोग करते हुए पूर्णांक m को n में बदलना है। अनुमत संचालन - दी गई स

  1. सी ++ प्रोग्राम किसी दिए गए नंबर के अंकों का योग करने के लिए

    C++ भाषा में अंकों के योग की गणना करने के लिए यहां एक उदाहरण दिया गया है, उदाहरण #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {