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

C++ में 2 की घातें और सबसीक्वेंस


इस समस्या में, हमें N पूर्णांकों की एक सरणी दी गई है। हमारा कार्य उन सबसीक्वेंस की संख्या ज्ञात करना है जिन्हें बनाया जा सकता है जैसे कि यदि उनके तत्वों को गुणा किया जाए, तो वे एक ऐसी संख्या देते हैं जो 2 की घात है।

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

इनपुट - arr = [2, 5, 4]

आउटपुट - 3

व्याख्या - सबसीक्वेंस [2], [4] और [2, 4] वांछित परिणाम देते हैं।

इस समस्या को हल करने के लिए, हमें घात के तर्क को समझने की आवश्यकता है।

केवल वे संख्याएं जो 2 की घात हैं, गुणा करके वांछित परिणाम देंगी। इसलिए, हमें सरणी से केवल उन सबसीक्वेंस पर विचार करना होगा जो स्वयं 2 की कुछ घातें हैं।

इसलिए, यदि सरणी में M तत्व हैं जो 2 की घातें हैं, तो सबएरे की संख्या 2M - 1 होगी।

उदाहरण

हमारे समाधान के कार्यान्वयन को दर्शाने वाला प्रोग्राम

#include <iostream> #include <math.h> using namespace std; bool isPowerTwo(int num) {    if (num == 0)       return false;    if (num == 1)       return true;    if (num & (num - 1))       return false;    return true; } int SubsequenceWithPowerTwo(int arr[], int N) {    int count = 0;    for (int i = 0; i < N; i++)       if (isPowerTwo(arr[i]))          count++;    return (int)(pow(2, count)) - 1; } int main() {    int arr[] = {5, 4, 8, 12, 32, 9 };    int N = sizeof(arr)/sizeof(arr[0]);    cout<<"सबसीक्वेंस की संख्या जो गुणा करके 2 की घात वाली संख्या देती हैं: ";    cout<<SubsequenceWithPowerTwo(arr, N)<<endl;    return 0; }

आउटपुट

सबसीक्वेंस की संख्या जो गुणा करके 2 की घात वाली संख्या देती हैं: 7

  1. - C++ में दीवारें और गेट - BFS से निकटतम गेट की दूरी

    समस्या विवरण मान लीजिए हमारे पास एक m x n 2D ग्रिड है, जिसे इन तीन संभावित मानों से इनिशियलाइज़ किया गया है: -1 दीवार या बाधा के लिए 0 गेट के लिए INF अनंत के लिए अर्थात खाली कमरा यहां 2^31 - 1 = 2147483647 INF है क्योंकि हम मान सकते हैं कि गेट की दूरी 2147483647 से कम है। प्रत्येक खाली कमरे को उ

  1. C++ में वृत्त और आयत के ओवरलैप की जांच C++ में वृत्त और आयत के ओवरलैप की जांच

    मान लीजिए हमारे पास एक वृत्त है जिसे (त्रिज्या, xc, yc) से दर्शाया जाता है, जहां (xc, yc) केंद्र के निर्देशांक हैं। हमारे पास एक अक्ष-संरेखित आयत भी है जिसे (x1, y1, x2, y2) से दर्शाया जाता है, जहां (x1, y1) निचले-बाएं कोने के निर्देशांक हैं और (x2, y2) ऊपरी-दाएं कोने के निर्देशांक हैं। हमें जांचना

  1. C++ में डोमिनो और ट्रोमिनो टाइलिंग C++ में डोमिनो और ट्रोमिनो टाइलिंग

    मान लीजिए हमारे पास दो प्रकार के आकार हैं, डोमिनो और ट्रोमिनो। उन्हें नीचे दिखाए अनुसार घुमाया जा सकता है:एक टाइलिंग में, प्रत्येक वर्ग को एक टाइल द्वारा कवर किया जाना चाहिए। यहां दो टाइलिंग तभी अलग हैं जब बोर्ड पर दो 4-दिशात्मक आसन्न सेल हों जैसे कि उन टाइलिंग में से केवल एक में दोनों वर्ग एक टाइल