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

सी ++ में कुछ नियमों का पालन करके एन को 1 तक कम करने के लिए आवश्यक कदमों की संख्या की गणना करें


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

  • यदि संख्या 2 की घात है, तो इसे घटाकर आधा कर दें।

  • अन्यथा इसे N-(2 की निकटतम शक्ति जो N से कम है) तक कम करें।

चरण 1 के लिए, हम जाँच करेंगे कि क्या N 2 की शक्ति है, यह जाँच कर कि क्या ceil(log2(N)), floor(log2(N)) समान परिणाम देता है। यदि हाँ तो N=N/3, ऑपरेशन की वृद्धि संख्या।

यदि चरण 1 का परिणाम गलत है, तो हम चरण 2 का प्रदर्शन करेंगे और N से 2 की निकटतम घात को N से घटाएंगे। N से 2 कम की निकटतम घात की गणना -

के रूप में की जाएगी।

x=floor(log2(N)) → जब N 2 की शक्ति नहीं है, log2(N) फ्लोटिंग पॉइंट मान देता है, मंजिल इसे N से कम निकटतम पूर्णांक तक कम कर देता है।

अब N=N-pow(2,x) → pow(2,x) N से 2 कम की निकटतम शक्ति देगा। N को कम करें।

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

इनपुट -एन=20

आउटपुट -:आवश्यक चरणों की संख्या -3

स्पष्टीकरण -एन=20

20 is not power of 2. Step 2. Reduce nearest power of 2 less than N from N. N=20- 16=4. Count=1.
4 is power of 2. Step 1. Reduce N to its half. N=4/2=2. Count=2.
2 is power of 2. Step 1. Reduce N to its half. N=2/2=1. Count=3.
N is 1 total step count=3.

इनपुट -एन=32

आउटपुट आवश्यक चरणों की संख्या - 5

स्पष्टीकरण -एन=32

32 is power of 2. Step 1. Reduce N to its half. N=32/2=16. Count=1.
16 is power of 2. Step 1. Reduce N to its half. N=16/2=8. Count=2.
8 is power of 2. Step 1. Reduce N to its half. N=8/2=4. Count=3.
4 is power of 2. Step 1. Reduce N to its half. N=4/2=2. Count=4.
2 is power of 2. Step 1. Reduce N to its half. N=2/2=1. Count=5.
N is 1 total step count=5.

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

  • हम एक पूर्णांक मान संग्रहीत करने के लिए एक पूर्णांक N लेते हैं।

  • फ़ंक्शन स्टेपकाउंट (int n) N लेता है और इसे कम करने के लिए आवश्यक चरणों की संख्या को 1 पर लौटाता है।

  • चरणों की प्रारंभिक गणना 0 के रूप में करें।

  • अब जबकि(n!=1) n के मान के अनुसार चरण 1, और 2 दोनों को निष्पादित करें।

  • यदि n 2 की शक्ति है ( ceil(log2(n))==floor(log2(n)) सत्य होगा), n को घटाकर आधा कर दें। वेतन वृद्धि की संख्या।

  • यदि 2 की शक्ति नहीं है तो n को pow(2,x) से कम करें जहां x मंजिल है (log2(n))। वेतन वृद्धि की संख्या।

  • जब लूप खत्म हो जाएगा तो गिनती में किए गए कार्यों की संख्या होगी।

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

उदाहरण

#include <iostream>
#include <math.h>
using namespace std;
// Function to return number of steps for reduction
int stepCount(int n){
   int count=0;
   while(n!=1){
      if(ceil(log2(n))==floor(log2(n))) //if n is power of 2 then this is true{
         n=n/2; //reduce n to half
         count++;
      } else {
         int x=floor(log2(n)); //floor value
         n=n-(pow(2,x)); //2^x is nearest power of 2 which is less than n
         count++;
      }
   }
   return count;
}
int main(){
   int N = 96;
   cout <<"Count of steps required to reduce N to 1:"<<stepCount(N);
   return 0;
}

आउटपुट

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

Count of steps required to reduce N to 1:6

  1. C++ में एक आयत में वर्गों की संख्या गिनें

    =B. लक्ष्य उन वर्गों की संख्या का पता लगाना है जिन्हें LXB आकार का एक आयत समायोजित कर सकता है। ऊपर दिया गया चित्र 3 X 2 आकार का एक आयत दिखाता है। इसमें 2, 2X2 वर्ग और 6,1X1 वर्ग हैं। कुल वर्ग=6+2=8. LXB आकार के प्रत्येक आयत में L*B संख्या 1X1 वर्ग होती है। सबसे बड़े वर्ग BXB आकार के होते ह

  1. जाँच करें कि क्या कोई संख्या C++ में किसी अन्य संख्या की घात है

    यहां हम देखेंगे कि एक संख्या दूसरी संख्या की घात है या नहीं। मान लीजिए एक संख्या 125 है, और दूसरी संख्या 5 दी गई है। तो यह सच हो जाएगा जब यह पता चलेगा कि 125 5 की शक्ति है। इस मामले में यह सच है। 125 =53 । एल्गोरिदम isRepresentPower(x, y): Begin    if x = 1, then       if y

  1. C++ प्रोग्राम किसी संख्या की शक्ति की गणना करने के लिए

    किसी संख्या की घात की गणना x^y के रूप में की जा सकती है जहाँ x संख्या है और y इसकी शक्ति है। उदाहरण के लिए। Let’s say, x = 2 and y = 10    x^y =1024    Here, x^y is 2^10 पुनरावर्ती और गैर-पुनरावर्ती कार्यक्रमों का उपयोग करके किसी संख्या की शक्ति की गणना की जा सकती है। इन