আসুন আমরা বিবেচনা করি আমাদের কাছে পূর্ণসংখ্যার একটি অ্যারে আছে, সেই অ্যারেটি এনক্রিপ্ট করা অ্যারে, ধরুন অ্যারেটি 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