### Problem

Given a set of n numbers (data type long). Write an algorithm to get the average.

**Constraints**

- It should work if one of the contributing number is the maximum possible number of type long.
- Casting it to other data types is not allowed.

### Solution

We can’t use addition for getting the average. If we do, first constraint might not get incorporated as we may overflow. .We have to work with an equation.**Method 1 - Average with difference**Keep looping till you hit the last number. Counter is the index variable for the loop that increments by one at each iteration.

average = average + (nextNumber – average)/counter

We have to round of every-time we hit an uneven divide and there is a loss of precision.

**Method 2 - Average with divide**

divide each number by n individually and then add up all of them.

like this average of a,b,c is –

average = a/3 + b/3 + c/3;

you can do it while traversing –

long average = 0 for(i = 1 to n ; i++) { nextNumber = inputSet[i]; average = average + nextNumber/ n; }

**References**

## 0 comments:

## Post a Comment