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