আসুন আমরা বিবেচনা করি আমাদের কাছে পূর্ণসংখ্যার একটি অ্যারে আছে, সেই অ্যারেটি এনক্রিপ্ট করা অ্যারে, ধরুন অ্যারেটি A =[10, 14, 12, 13, 11], আসল অ্যারে হল B =[5, 1, 3, 2, 4। ], আমরা দেখতে পাচ্ছি যে A এর সূচক I-এর প্রতিটি উপাদান এই নিয়ম অনুসরণ করে: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 এর সমস্ত উপাদান যোগ করি, তাহলে আমরা পাব যোগফল =b+c+d+a+c+d+a+b+d+a+b+c =3*( a+b+c+d)। সুতরাং B-এর উপাদানগুলির যোগফল হবে যোগফল/3, এখন আমরা যদি দেখি B-এর উপাদানগুলি হবে [সমষ্টি – A[0], যোগফল – A[1], যোগফল – A[2], যোগফল – 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