C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で指定された条件を満たす最初のN個の自然数の順列を見つけます


2つの整数NとKがあり、すべての1 <=iに対してGCD(P [i]、i)> 1の条件を満たすK個の要素が正確に存在するように、最初のN個の自然数の順列Pを見つける必要があるとします。 <=N。したがって、N=3およびK=1の場合、出力は2、1、3になります。gcd(2、1)=1、gcd(1、2)=1、gcd(3、3)=3

アプローチは単純です。最後のk個の要素をその場所に保持し、残りの要素を移動して、i番目の要素が(i + 1)番目の位置に配置され、(N-K)番目の要素が保持されるようにします。 gcd(x、x + 1)=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

  1. 偶数である最初のn個の自然数の平均を見つけるPHPプログラム

    偶数である最初のn個の自然数の平均を見つけるためのコードは次のとおりです- 例 <?php function even_nums_avg($val) {    return $val + 1; } $val = 11; print_r("The average of the first n natural numbers that are even is "); echo(even_nums_avg($val)); ?> 出力 The average of the first n natural numbers that are even i

  2. Pythonで中央値がMになるように、最初のN個の自然数の順列でサブ配列の数を見つけます

    最初のN個の自然数の順列を含む配列Aがあり、別の数Mも与えられていると仮定します。ここで、M≤Nの場合、次のようなサブ配列の数を見つける必要があります。シーケンスの中央値はMです。ご存知のように、シーケンスの中央値は、昇順で並べ替えた後のシーケンスの中央にある要素の値として定義されます。偶数の長さのシーケンスでは、2つの中央の要素の左側が使用されます。 したがって、入力がA =[3、5、6、4、2]およびM =5の場合、必要なサブ配列は[3、5、6]、[5]、[5]であるため、出力は4になります。 、6]および[5、6、4]。 これを解決するには、次の手順に従います- n:=arrのサ