Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Round Price
//'main' method must be in a class 'Rextester'. //Compiler version 1.8.0_111 import java.util.*; import java.lang.*; class Rextester { public static void main(String args[]) { double[] input = new double[10]; StringBuilder sb = new StringBuilder(); Random rand = new Random(); for (int i = 0; i < 10; i++) { int num1 = rand.nextInt(100); double num2 = rand.nextDouble(); double num = (double) num1 + num2; input[i] = num; sb.append(num).append(","); } System.out.println(sb.toString()); sb.setLength(0); int[] result = roundUp(input); for (int i = 0; i < result.length; i++) { sb.append(result[i]).append(","); } System.out.println(sb.toString()); } public static int[] roundUp(double[] input) { double sum = 0; for (double i: input) sum += i; long target = Math.round(sum); //System.out.println("target = " + String.valueOf(target)); long floorSum = 0; for (double i: input) floorSum += Math.round(Math.floor(i)); List<NumberIndex> nums = new ArrayList<>(); for (int i = 0; i < input.length; i++) nums.add(new NumberIndex(input[i], i)); Collections.sort(nums, (a, b) -> (Math.ceil(a.val) - a.val) >= (Math.ceil(b.val) - b.val) ? 1 : -1); int[] res = new int[input.length]; long diff = target - floorSum; for (NumberIndex num: nums) { if (diff-- > 0) res[num.index] = (int) Math.round(Math.ceil(num.val)); else res[num.index] = (int) Math.round(Math.floor(num.val)); } //int resSum = 0; //for (int num: res) resSum += num; //System.out.println("result = " + String.valueOf(resSum)); return res; } } class NumberIndex { double val; int index; public NumberIndex(double v, int i) { val = v; index = i; } }
run
|
edit
|
history
|
help
0
Add Two Numbers saved in linked lists
1*2-3+4
First Unique Character in a String
collectors and stream
Rextester
bookstore
swastik
Человечки
data
Desvio Padrão - LPI