C++でarr[i]=i *(-1)^ iの場合、配列内のインデックスLからRまでの要素の合計
この問題では、LとRの2つの数値が与えられます。 arr [i] =i *(-1)^iとなる配列arr[]もあります。 。私たちのタスクは、arr [i] =i *(-1)^ iの場合に、配列内のインデックスLからRまでの要素の合計を計算するプログラムを作成することです。
したがって、配列の範囲[L、R]内の要素の合計を見つける必要があります。
問題を理解するために例を見てみましょう
入力
L = 2 , R = 6
出力
4
説明
arr[] = {-1, 2, -3, 4, -5, 6} Sum = 2+ (-3) + 4 + (-5) + 6 = 4
この問題の簡単な解決策は、LからRへのループを実行してから、すべての偶数を加算し、すべての奇数を減算することです。そして最後に合計を返します。
例
ソリューションの動作を説明するプログラム
#include <iostream> #include <math.h> using namespace std; int CalcArrSumLtoR(int L, int R) { int sum = 0; for (int i = L; i <= R; i++){ sum += (i * pow((-1), i)); } return sum; } int main() { int L = 3, R = 15; cout<<"Sum of elements of array from index "<<L<<" to "<<R<<" is "lt;lt;CalcArrSumLtoR(L, R); return 0; }
出力
Sum of elements of array from index 3 to 15 is -9
これは効果的なアプローチではなく、O(n)時間計算量の問題を解決します。
効率的な解決策は、n個の奇数の合計の式を使用することです。だから、
最初のn個の奇数の合計=n* n
最初のn個の偶数の合計=n*(n + 1)
ここで、最終的な合計は次のように計算されます
sum = (sum of first R even number - sum of first (L-1) even number ) - (sum of first R odd number - sum of first (L-1) odd number )
*nまでN/2の偶数/奇数があります。つまり、R/2の偶数があります。したがって、R/2とL/2を使用して合計を計算します。
例
ソリューションの動作を説明するプログラム
#include <iostream> using namespace std; long int findSum(int n, bool isEven) { long int total = 0; if(isEven == true){ total = (n) / 2; return (total * (total+1)); } else { total = (n + 1) / 2; return total * total; } } int CalcArrSumLtoR(int L, int R) { return (findSum(R, true) - findSum(L - 1, true))- (findSum(R, false) - findSum(L - 1, false)); } int main() { int L = 3, R = 15; cout<<"Sum of elements of array from index "<<L<<" to "<<R<<" is "<<CalcArrSumLtoR(L, R); return 0; }
出力
Sum of elements of array from index 3 to 15 is -9
-
C ++を使用して、暗号化された配列(他の要素の合計の配列)から元の配列を検索します。
整数の配列があり、その配列が暗号化された配列であると仮定します。配列がA =[10、14、12、13、11]であり、元の配列がB =[5、1、3、2、4 ]、AのインデックスIの各要素が次のルールに従っていることがわかります。A[i] =B[j]の位置jにあるすべての要素の合計。ここでI≠jです。私たちのタスクは、暗号化された配列から元の配列を見つけることです。 タスクは算術観測に基づいています。配列のサイズが4であるとすると、元の配列Bには4つの要素B =[a、b、c、d]があるため、AはA [b + c + d、a + c + d、a + b+dのようになります。 、a + b + c]
-
C ++の配列のすべての要素にXOR演算を適用して、配列の合計を最小化する
説明 サイズの配列が与えられた場合、N。Xと配列の各要素を使用してXOR演算を実行するときに、配列要素の合計が最小になるように要素Xを見つけます。 If input array is: arr [] = {8, 5, 7, 6, 9} then minimum sum will be 30 Binary representation of array elments are: 8 : 1000 5 : 0101 7 : 0111 6 : 0101 9 : 1001 If X = 5 then after performing XOR sum will be 30: 8 ^ 5 = 13 5