Your task is to find the sum of the length of all lines (in kms) that can be drawn between co-ordinates of these countries.
Population limit: 28875
Note: Population limit will change at random intervals. So please make sure answer is computed for the correct population limit before submitting.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
int populationLimit = 28875;
int r = 6371000;// metres
ArrayList<Country> countries = new ArrayList<>();
double total = 0;
for (int i = 0; i < countries.size(); i++) {
for (int j = i + 1; j < countries.size(); j++) {
double fi1 = countries.get(i).getLatitude() * Math.PI / 180; // φ, λ in radians
double fi2 = countries.get(j).getLatitude() * Math.PI / 180;
double dFi = (countries.get(j).getLatitude() - countries.get(i).getLatitude()) * Math.PI / 180;
double dLam = (countries.get(j).getLongitude() - countries.get(i).getLongitude()) * Math.PI / 180;
double a = Math.sin(dFi / 2) * Math.sin(dFi / 2) +
Math.cos(fi1) * Math.cos(fi2) * Math.sin(dLam / 2) * Math.sin(dLam / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
total += r * c;
}
}
System.out.printf("Total distance: %.2f\n", total / 1000);
}
}
Comments
Leave a comment