使用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.