Sum of array elements after reversing each element
Given an array arr[] consisting of N positive integers, the task is to find the sum of all array elements after reversing digits of every array element.
Examples:
Input: arr[] = {7, 234, 58100}
Output: 18939
Explanation:
Modified array after reversing each array elements = {7, 432, 18500}.
Therefore, the sum of the modified array = 7 + 432 + 18500 = 18939.
Input: arr[] = {0, 100, 220}
Output: 320
Explanation:
Modified array after reversing each array elements = {0, 100, 220}.
Therefore, the sum of the modified array = 0 + 100 + 220 = 320.
Approach: The idea is to reverse each number of the given array as per the given conditions and find sum of all array elements formed after reversing. Below steps to solve the problem:
- Initialize a variable, say sum, to store the required sum.
- Initialize variable count as 0 and f as false to store count of ending 0s of arr[i] and flag to avoid all non-ending 0.
- Initialize rev as 0 to store reversal of each array element.
- Traverse the given array and for each array element do the following operation:
- Increment count and divide arr[i] by 10 until all the zeros at the end are traversed.
- Reset f with true that means all ending 0 digits have been considered.
- Now, reverse arr[i] by updating rev = rev*10 + arr[i] % 10 and arr[i] = arr[i]/10.
- After traversing each digit of arr[i], update rev = rev * Math.pow(10, count) to add all ending 0’s to the end of reversed number.
- For each reverse number in the above step, add that value to the resultant sum.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void totalSum( int arr[], int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
{
int count = 0;
int rev = 0, num = arr[i];
bool f = false ;
while (num > 0)
{
while (num > 0 && !f &&
num % 10 == 0)
{
count++;
num = num / 10;
}
f = true ;
if (num > 0)
{
rev = rev * 10 +
num % 10;
num = num / 10;
}
}
if (count > 0)
rev = rev * pow (10, count);
sum = sum + rev;
}
cout << sum;
}
int main()
{
int arr[] = { 7, 234, 58100 };
int n = sizeof (arr) / sizeof (arr[0]);
totalSum(arr, n);
return 0;
}
|
Java
import java.util.*;
class GFG {
static void totalSum( int [] arr)
{
int sum = 0 ;
for ( int i = 0 ;
i < arr.length; i++) {
int count = 0 ;
int rev = 0 , num = arr[i];
boolean f = false ;
while (num > 0 ) {
while (num > 0 && !f
&& num % 10 == 0 ) {
count++;
num = num / 10 ;
}
f = true ;
if (num > 0 ) {
rev = rev * 10
+ num % 10 ;
num = num / 10 ;
}
}
if (count > 0 )
rev = rev
* ( int )Math.pow( 10 ,
count);
sum = sum + rev;
}
System.out.print(sum);
}
public static void
main(String[] args)
{
int [] arr = { 7 , 234 , 58100 };
totalSum(arr);
}
}
|
Python3
def totalSum(arr, n):
sums = 0
for i in range ( 0 , n):
count = 0
rev = 0
num = arr[i]
f = False
while num > 0 :
while (num > 0 and f = = False and
num % 10 = = 0 ):
count = count + 1
num = num / / 10
f = True
if num > 0 :
rev = rev * 10 + num % 10
num = num / / 10
if (count > 0 ):
rev = rev * pow ( 10 , count)
sums = sums + rev
print (sums)
if __name__ = = "__main__" :
arr = [ 7 , 234 , 58100 ]
n = len (arr)
totalSum(arr, n)
|
C#
using System;
class GFG{
static void totalSum( int [] arr)
{
int sum = 0;
for ( int i = 0; i < arr.Length; i++)
{
int count = 0;
int rev = 0, num = arr[i];
bool f = false ;
while (num > 0)
{
while (num > 0 && !f &&
num % 10 == 0)
{
count++;
num = num / 10;
}
f = true ;
if (num > 0)
{
rev = rev * 10 +
num % 10;
num = num / 10;
}
}
if (count > 0)
rev = rev * ( int )Math.Pow(10, count);
sum = sum + rev;
}
Console.Write(sum);
}
static public void Main()
{
int [] arr = { 7, 234, 58100 };
totalSum(arr);
}
}
|
Javascript
<script>
function totalSum(arr, n)
{
let sum = 0;
for (let i = 0; i < n; i++)
{
let count = 0;
let rev = 0, num = arr[i];
let f = false ;
while (num > 0)
{
while (num > 0 && !f &&
num % 10 == 0)
{
count++;
num = Math.floor(num / 10);
}
f = true ;
if (num > 0)
{
rev = rev * 10 +
num % 10;
num = Math.floor(num / 10);
}
}
if (count > 0)
rev = rev * Math.pow(10, count);
sum = sum + rev;
}
document.write(sum);
}
let arr = [ 7, 234, 58100 ];
let n = arr.length;
totalSum(arr, n);
</script>
|
Time Complexity: O(N*log10M), where N denotes the length of the array and M denotes maximum array element.
Auxiliary Space: O(1)
Last Updated :
09 Apr, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...