使用C++從加密陣列(其他元素的和的陣列)中查詢原始陣列。


假設我們有一個整數陣列,該陣列是加密陣列,假設該陣列為A = [10, 14, 12, 13, 11],原始陣列為B = [5, 1, 3, 2, 4],我們可以看到A中索引I的每個元素都遵循此規則:A[i] = B中位置j的所有元素之和,其中I ≠ j。我們的任務是從加密陣列中找到原始陣列。

此任務基於算術觀察。假設陣列大小為4,原始陣列B有四個元素B = [a, b, c, d],則A將類似於A[b+c+d, a+c+d, a+b+d, a+b+c],如果我們新增B的所有元素,我們將得到sum = b+c+d+a+c+d+a+b+d+a+b+c = 3*(a+b+c+d)。因此B的元素總和將為sum/3,現在如果我們看到B的元素將為[sum – A[0], sum – A[1], sum – A[2], sum – A[3]]

示例

 線上演示

#include<iostream>
using namespace std;
void showOrigianlArray(int arr[], int n) {
   int sum = 0;
   for (int i=0; i<n; i++)
      sum += arr[i];
      sum = sum/(n-1);
   for (int i=0; i<n; i++)
      cout << (sum - arr[i]) << " ";
}
int main() {
   int arr[] = {10, 14, 12, 13, 11};
   int n = sizeof(arr) / sizeof(arr[0]);
   showOrigianlArray(arr, n);
}

輸出

5 1 3 2 4

更新於:2019年10月30日

524 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.