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

एक क्रमचय खोजें जैसे कि सूचकांकों की संख्या जिसके लिए gcd(p[i], i)> 1 C++ में बिल्कुल K है

मान लीजिए कि हमारे पास दो पूर्णांक N और K हैं। हमें [1 से N] तक के पूर्णांकों का क्रमचय इस प्रकार ज्ञात करना है कि सूचकांकों की संख्या (1 - आधार अनुक्रमण) जहां gcd(P[i], i)> 1 है बिल्कुल K. तो अगर N =4 और K =3, तो आउटपुट [1, 2, 3, 4] होगा, क्योंकि gcd(1, 1) =1, gcd(2, 2) =2, gcd(3, 3) =3, जीसीडी(4, 4) =4

अगर हम इसे ध्यान से देखें, तो हम पा सकते हैं कि gcd(i, i+1) =1, gcd(1, i) =1 और gcd(i, i) =i। चूँकि किसी भी संख्या का GCD और 1 हमेशा 1 होता है, K लगभग N - 1 हो सकता है। क्रमपरिवर्तन पर विचार करें जहाँ P[i] =i। सूचकांकों की संख्या जहां gcd(P[i], i)> 1, N-1 होगा। यदि हम 1 को छोड़कर लगातार दो तत्वों की अदला-बदली करते हैं, तो ऐसे सूचकांकों की संख्या ठीक 2 से कम हो जाएगी, और 1 के साथ अदला-बदली करने से गिनती कम हो जाएगी। ठीक 1.

उदाहरण

#include<iostream>
using namespace std;
void findPermutation(int n, int k) {
   if (k >= n || (n % 2 == 0 && k == 0)) {
      cout << -1;
      return;
   }
   int P[n + 1];
   for (int i = 1; i <= n; i++)
   P[i] = i;  
   int count = n - 1;
   for (int i = 2; i < n; i+=2) {
      if (count - 1 > k) {
         swap(P[i], P[i + 1]);
         count -= 2;
      } else if (count - 1 == k) {
         swap(P[1], P[i]);
         count--;
      } else
         break;
   }
   for (int i = 1; i <= n; i++)
   cout << P[i] << " ";
}
int main() {
   int n = 5, k = 3;
   cout << "Permutation is: ";
   findPermutation(n, k);
}

आउटपुट

Permutation is: 2 1 3 4 5

  1. एक सरणी में सभी जोड़े (ए, बी) खोजें जैसे कि सी ++ में% बी =के

    मान लीजिए कि हमारे पास एक सरणी ए है, उस सरणी से, हमें सभी जोड़े (ए, बी) प्राप्त करना है जैसे कि ए% बी =के। मान लीजिए कि सरणी A =[2, 3, 4, 5, 7] और k =3 है, तो जोड़े (7, 4), (3, 4), (3, 5), (3, 7) हैं। इसे हल करने के लिए, हम सूची को देखेंगे और जांचेंगे कि दी गई शर्त संतोषजनक है या नहीं। उदाहरण #inc

  1. ऐसी संख्या x ज्ञात कीजिए कि C++ में x और उसके अंकों का योग दिए गए n के बराबर हो

    यहां हम एक समस्या देखेंगे, जहां हम एक संख्या n लेते हैं, हमें एक और मान x ज्ञात करना होता है, जैसे कि x का x + अंकों का योग दी गई संख्या n के समान हो। मान लीजिए n का मान 21 है। यह प्रोग्राम एक संख्या x =15, 15 + अंकों का योग 15, यानी 15 + 1 + 5 =21 =n के रूप में लौटाएगा। इस समस्या को हल करने के लिए

  1. एक सकारात्मक संख्या एम खोजें जैसे कि जीसीडी (एन ^ एम, एन एंड एम) पायथन में अधिकतम है

    मान लीजिए कि हमारे पास एक संख्या एन है, हमें एक सकारात्मक संख्या एम खोजना है जैसे कि जीसीडी (एन ^ एम, एन एंड एम) जितना संभव हो उतना बड़ा हो और एम <एन। हम इस प्रकार प्राप्त सबसे बड़ा gcd भी लौटा देंगे। तो, अगर इनपुट 20 की तरह है, तो आउटपुट 31 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - य