Objective
In the previous challenge, we calculated a mean. In this challenge, we practice calculating a weighted mean. Check out the Tutorial tab for learning materials and an instructional video!
Task
Given an array, , of integers and an array, , representing the respective weights of 's elements, calculate and print the weighted mean of 's elements. Your answer should be rounded to a scale of decimal place (i.e., format).
Input Format
The first line contains an integer, , denoting the number of elements in arrays and .
The second line contains space-separated integers describing the respective elements of array .
The third line contains space-separated integers describing the respective elements of array .
Constraints
- , where is the element of array .
- , where is the element of array .
Output Format
Print the weighted mean on a new line. Your answer should be rounded to a scale of decimal place (i.e., format).
Sample Input
5
10 40 30 50 20
1 2 3 4 5
Sample Output
32.0
Explanation
We use the following formula to calculate the weighted mean:
And then print our result to a scale of decimal place () on a new line.
Solution
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner sc = new Scanner(System.in);
List<Double> x = new ArrayList<>();
List<Double> w = new ArrayList<>();
double sum=0.0,mul=0.0,res = 0.0;
int n=sc.nextInt();
for(int i=0;i<n;i++)
x.add(sc.nextDouble());
for(int i=0;i<n;i++)
w.add(sc.nextDouble());
for(Double d : w)
sum += d;
for(int i=0;i<n;i++)
mul +=(x.get(i)*w.get(i));
res = mul/sum;
System.out.printf("%.1f",res);
}
}
0 comments:
Do not spam here.