C++で指定された長さの合成数の範囲を検索します
範囲の長さがnであるため、最初の数値がaの場合、他の数値はa + 1、a + 2、…、a + n – 1であり、すべて合成数である必要があります。 x!(xは正の整数)を見ると、xの因数は2、3、4、…、p – 1です。したがって、p! + iには係数iがあるので、p! +私は複合でなければなりません。 p! + 2、p! + 3、…p! + p – 1は、すべて複合です。したがって、範囲は[p! + 2、p! + p – 1]
例
#include<iostream> using namespace std; int fact (int n) { if (n == 0) return 1; return n * fact(n-1); } void showRange(int n) { int a = fact(n + 2) + 2; int b = a + n - 1; cout << "[" << a << ", " << b << "]"; } int main() { int n = 3 ; showRange(n); }
出力
[122, 124]
-
C++で指定された制約の下で重複を検索します
6つの異なる番号のリストがあるとします。 1つの数字だけが5回繰り返されます。したがって、配列には合計10個の要素があります。 2つの比較のみを使用して重複する番号を見つけます。リストが[1、2、3、4、4、4、4、4、5、6]のような場合、出力は4です。 数字は10個しかないため、重複する数字の種類に関係なく、数字の範囲はインデックス3から5になります。これらのインデックスを確認することで、結果を見つけることができます。 例 #include<iostream> using namespace std; int getDuplicate(int array[]) {  
-
xがC++でyを分割するように、指定された範囲で別個のペア(x、y)を見つけます
ここで、興味深い問題が1つあります。ここで、ペア(x、y)が見つかります。ここで、xとyは範囲内にあるため、l <=x、y <=rであり、ペアには1つのプロパティがあり、xの値はyを除算します。 。利用可能なペアが複数ある場合は、1つだけを選択してください。 下限lと2lの値を取得すれば、O(1)時間でこの問題を解決できます。 y / xの最小値は2である可能性があり、範囲内にさらに大きな値が存在する場合は、2が範囲内になります。また、xを増やすと、2xも増えるため、lと2lは、指定された範囲に入る最小のペアになります。 例 #include<iostream> using na