आइए विचार करें कि हमारे पास पूर्णांकों की एक सरणी है, वह सरणी एन्क्रिप्टेड सरणी है। मान लीजिए सरणी A = [10, 14, 12, 13, 11], मूल सरणी B = [5, 1, 3, 2, 4] है। हम देख सकते हैं कि इंडेक्स i पर A का प्रत्येक तत्व इस नियम का पालन करता है: A[i] = B[j] में स्थिति 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 के सभी तत्वों को जोड़ते हैं, तो हमें योग = 3×(a+b+c+d) मिलेगा। तो B के तत्वों का योग sum/3 होगा, अब यदि हम B के तत्वों को देखें तो वे [sum - A[0], sum - A[1], sum - A[2], sum - A[3]] होंगे।
C++ उदाहरण
#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);
return 0;
}
आउटपुट
5 1 3 2 4