C++で配列内の階乗の合計を検索します
ソートされた配列Aがあるとします。すべての要素が2回表示されますが、1つの要素が1回だけ存在します。その要素を見つける必要があります。配列が[1、1、3、3、4、4、5、6、6、7、7、9、9]の場合、単一の要素は5です。
これを解決するために二分探索アプローチを使用します。単一要素の前のすべての要素は、インデックス0、2、4、…で最初に出現し、インデックス1、3、5、…で最初に出現しますが、単一要素の後、最初の番号のすべての出現は奇数インデックスになり、 2番目の要素は偶数のインデックス位置にあります。
したがって、最初に中央のインデックスmidを見つけ、midが偶数の場合は、A[mid]とA[mid + 1]を比較します。両方が同じ場合は、必要に応じて左または右に移動します。それ以外の場合、中央が奇数の場合は、A[mid]とA[mid – 1]を比較します。同じ場合は、必要に応じて左または右に移動します。
例
#include<iostream> using namespace std; void findSingleElement(int *arr, int left, int right) { if (left > right) return; if (left==right) { cout << "The required element is: "<< arr[left]; return; } int mid = (left + right) / 2; if (mid%2 == 0) { if (arr[mid] == arr[mid+1]) findSingleElement(arr, mid+2, right); else findSingleElement(arr, left, mid); }else{ if (arr[mid] == arr[mid-1]) findSingleElement(arr, mid+1, right); else findSingleElement(arr, left, mid-1); } } int main() { int arr[] = {1, 1, 3, 3, 4, 4, 5, 6, 6, 7, 7, 9, 9}; int len = sizeof(arr)/sizeof(arr[0]); findSingleElement(arr, 0, len-1); }
出力
The required element is: 5
-
C ++を使用して、N階乗の合計の最後の2桁を検索します。
ここでは、最後の2桁を取得する方法を説明します。 N階乗の合計の単位桁と10桁。したがって、N =4の場合、1になります。 + 2! + 3! + 4! =33.したがって、単位の場所は3で、10の場所は3です。結果は33になります。 10の後、10の場所は0のままになります。N=10以上の場合、00になります。階乗数のN=1から10のグラフを作成できます。 これらの手順を使用してこの問題を解決できます- nの値が10未満の場合、(1!+ 2!+…+ n!)mod 10 それ以外の場合、nの値が10以上の場合、(1!+ 2!+…+ 10!)mod 10 =13 例 #inc
-
配列の最大要素を見つけるためのC++プログラム
配列には複数の要素が含まれており、配列内の最大の要素は他の要素よりも大きい要素です。 たとえば。 5 1 7 2 4 上記の配列では、7が最大の要素であり、インデックス2にあります。 配列の最大の要素を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() { int a[] = {4, 9, 1, 3, 8}; int largest, i, pos; largest = a[0