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