## Thursday, April 20, 2017

### Find original array from encrypted array (An array of sums of other elements) - GeeksforGeeks

Find original array from encrypted array (An array of sums of other elements) - GeeksforGeeks
Find original array from a given encrypted array of size n. Encrypted array is obtained by replacing each element of the original array by the sum of the remaining array elements.

```Let n = 4, and
the original array be ori[] = {a, b, c, d}
encrypted array is given as:
arr[] = {b+c+d, a+c+d, a+b+d, a+b+c}

Elements of encrypted array are :
arr[0] = (b+c+d), arr[1] = (a+c+d),
arr[2] = (a+b+d), arr[3] = (a+b+c)
sum =  arr[0] + arr[1] + arr[2] + arr[3]
= (b+c+d) + (a+c+d) + (a+b+d) + (a+b+c)
= 3(a+b+c+d)
Sum of elements of ori[] = sum / n-1
= sum/3
= (a+b+c+d)
Thus, for a given encrypted array arr[] of size n, the sum of
the elements of the original array ori[] can be calculated as:
sum =  (arr[0]+arr[1]+....+arr[n-1]) / (n-1)

Then, elements of ori[] are calculated as:
ori[0] = sum - arr[0]
ori[1] = sum - arr[1]
.
.
ori[n-1] = sum - arr[n-1]   ```
`void` `findAndPrintOriginalArray(``int` `arr[], ``int` `n)`
`{`
`    ``// total sum of elements`
`    ``// of encrypted array`
`    ``int` `arr_sum = 0;`
`    ``for` `(``int` `i=0; i<n; i++)`
`        ``arr_sum += arr[i];`

`    ``// total sum of elements`
`    ``// of original array`
`    ``arr_sum = arr_sum/(n-1);`

`    ``// calculating and displaying`
`    ``// elements of original array`
`    ``for` `(``int` `i=0; i<n; i++)`
`        ``cout << (arr_sum - arr[i]) << ``" "``;`
`}`

Read full article from Find original array from encrypted array (An array of sums of other elements) - GeeksforGeeks