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

C++ में दिए गए ऑपरेशनों को निष्पादित करके किसी संख्या को घटाकर 1 कर दें

इनपुट के रूप में एक पूर्णांक संख्या दी गई है। लक्ष्य इनपुट संख्या को 1 तक कम करने के लिए आवश्यक चरणों या संचालन की न्यूनतम संख्या का पता लगाना है। जो ऑपरेशन किए जा सकते हैं वे होंगे-:

  • यदि संख्या सम है, तो उसे 2 से भाग दें।

  • यदि संख्या विषम है, तो इसे 1 से बढ़ाएँ या घटाएँ।

उदाहरण

इनपुट - संख्या=28

आउटपुट − 28 से 1:6 तक कम करने के लिए न्यूनतम कदम

स्पष्टीकरण -

28 सम है - 2 =14 से भाग दें

14 सम है - 2 =7 से भाग दें

7 विषम है - 1 =8 से वृद्धि

8 सम है - 2 =4 से भाग दें

4 सम है - 2 =2 से भाग दें

2 सम है - 2 =1 से भाग दें

इनपुट - संख्या=9

आउटपुट − 9 से 1:4 तक कम करने के लिए न्यूनतम कदम

स्पष्टीकरण -

9 विषम है - 1 =8 से कमी

8 सम है - 2 =4 से भाग दें

4 सम है - 2 =2 से भाग दें

2 सम है - 2 =1 से भाग दें

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

इस दृष्टिकोण में संख्या को 1 तक कम करने के लिए आवश्यक न्यूनतम संचालन की जांच के लिए एक पुनरावर्ती दृष्टिकोण का उपयोग करें। यदि इसे केवल 2 से विभाजित किया जाता है तो संख्या + 1 या संख्या -1 के न्यूनतम तरीकों के लिए पुनरावर्ती रूप से जांच करें, जो भी कम हो।

  • इनपुट नंबर को पूर्णांक के रूप में लें।

  • फ़ंक्शन minWays(int num) इनपुट के रूप में num लेता है और num को 1 तक कम करने के लिए आवश्यक न्यूनतम संचालन की गिनती देता है।

  • चर tmp1, tmp2 और min को पूर्णांकों के रूप में लें।

  • अगर संख्या 0 है तो वापस आएं 1.

  • अगर num%2==0 तो यह सम है तो सेट करें num=num/2

  • यदि संख्या विषम है तो tmp1=minWays(num-1) और tmp2=minWays(num+1) सेट करें।

  • न्यूनतम सेट न्यूनतम tmp1 और tmp2 है।

  • वापसी 1+मिनट।

  • अंत में हमें मनचाहा परिणाम मिलेगा।

  • मुख्य में परिणाम प्रिंट करें।

उदाहरण

#include <iostream>
using namespace std;
int minWays(int num){
   int tmp1,tmp2,min;
   if (num == 1){
      return 0;
   }
   else if (num % 2 == 0){
      tmp1=minWays(num/2);
      return (1 + tmp1);
   }
   else{
      int tmp1=minWays(num - 1);
      int tmp2=minWays(num + 1);
      int min=tmp1<tmp2?tmp1:tmp2;
      return (1 + min);
   }
}
int main(){
   int Number = 21;
   cout <<"Minimum steps to reduce "<<Number<<" to 1: "<<minWays(Number);
   return 0;
}

आउटपुट

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

Minimum steps to reduce 21 to 1: 6

  1. जांचें कि क्या दिया गया मोबाइल नंबर C++ में फैंसी है

    हमारे पास 10 अंकों का मोबाइल नंबर है, हमारा काम यह जांचना है कि नंबर फैंसी नंबर है या नहीं। फैंसी नंबर के लिए तीन अलग-अलग शर्तें हैं। यदि कम से कम एक सत्य है, तो संख्या फैंसी है। ये शर्तें नीचे की तरह हैं - एक नंबर लगातार तीन बार आता है, जैसे 555 तीन क्रमागत संख्याएं या तो बढ़ते या घटते क्रम में है

  1. जांचें कि कोई संख्या दिए गए आधार में है या नहीं C++

    मान लीजिए, हमारे पास एक संख्या स्ट्रिंग है, हमें यह पता लगाना है कि संख्या दिए गए आधार B की है या नहीं? यदि स्ट्रिंग 101110, b =2 है, तो प्रोग्राम सही हो जाएगा। यदि स्ट्रिंग A8F है, तो आधार 16 है, यह सत्य होगा। दृष्टिकोण बहुत सरल है। यदि सभी वर्ण दिए गए आधार के प्रतीकों की श्रेणी में हैं, तो सही लौ

  1. जाँच करें कि दी गई संख्या C++ में विरल है या नहीं

    इस खंड में, हम देखेंगे कि कैसे जांचा जाता है कि कोई संख्या विरल है या नहीं। एक संख्या को विरल कहा जाता है यदि संख्या के द्विआधारी प्रतिनिधित्व में दो या दो से अधिक लगातार 1s नहीं हैं। मान लीजिए एक संख्या 72 के समान है। यह 01001000 है। यहाँ कोई दो या अधिक क्रमागत 1s नहीं हैं। यह जांचने के लिए कि कोई