使用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
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP