मान लीजिए हमारे पास दो पूर्णांक N और K हैं, और हमें पहले N प्राकृतिक संख्याओं का क्रमपरिवर्तन P खोजना है जैसे कि ठीक K तत्व हों जो शर्त GCD(P[i], i) > 1 को संतुष्ट करें सभी 1 <= i <= N के लिए। तो जब N = 3 और K = 1, तो आउटपुट 2, 1, 3 होगा। और gcd(2, 1) = 1, gcd(1, 2) = 1, gcd(3, 3) = 3
दृष्टिकोण सरल है, हम अंतिम k तत्वों को उनकी जगह पर रखेंगे, बाकी तत्वों को इस तरह ले जाएंगे कि ith तत्व (i + 1)th स्थिति पर रखा जाए और (N - K)th तत्व को स्थिति 1 पर रखा जाए, क्योंकि gcd(x, x+1) = 1।
उदाहरण
#include <iostream>
using namespace std;
void findPermutation(int n, int k) {
int permutation[n + 1];
for (int i = 1; i <= n; i++)
permutation[i] = i;
for (int i = 1; i < n - k; i++)
permutation[i + 1] = i;
permutation[1] = n - k;
for (int i = 1; i <= n; i++)
cout << permutation[i] << " ";
}
int main() {
int n = 5, k = 2;
cout << "The permutation is: ";
findPermutation(n, k);
}
आउटपुट
The permutation is: 3 1 2 4 5