我需要一個接受總數計數和第一個數字作為輸入的演算法,其中這些數字的總和必須為 100。
例子:
輸入:計數 = 5,第一個 = 50
輸出必須是這樣的:50、30、15、3.5、1.5
輸入:計數 = 7,第一個 = 30
輸出必須是這樣的:30、25、20、10、7.5、5、2.5
對我來說,輸出是否如我在示例中指出的那樣并不重要,這完全是關于
我只是做了這段代碼,我不知道如何將“第一個”變數集成到它:
public class Main {
public static void main(String[] args) {
var count = 5;
var first = 50;
System.out.println(calc(first, count)); // [6.7, 13.3, 20.0, 26.7, 33.3]
}
private static List<BigDecimal> calc(double first, double count) {
double total = 100;
int multiplier = 0;
for (int i = 1; i <= count; i ) {
multiplier =i;
}
BigDecimal a = BigDecimal.valueOf(total / multiplier);
List<BigDecimal> list = new ArrayList<>();
BigDecimal b = BigDecimal.ZERO;
for (int i = 0; i < count; i ) {
b = b.add(a);
list.add(b.setScale(1, RoundingMode.HALF_UP));
}
return list;
}
}
uj5u.com熱心網友回復:
為什么不能從總數中減去第一個數字,然后將計數減 1?
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
var count = 5;
var first = 50;
System.out.println(calc(first, count)); // [6.7, 13.3, 20.0, 26.7, 33.3]
}
private static List<BigDecimal> calc(double first, double count) {
double total = 100 - first; // Decrease total by first
count--; // Decrement
int multiplier = 0;
for (int i = 1; i <= count; i ) {
multiplier =i;
}
BigDecimal a = BigDecimal.valueOf(total / multiplier);
List<BigDecimal> list = new ArrayList<>();
list.add(BigDecimal.valueOf(first)); // Add first to list
BigDecimal b = BigDecimal.ZERO;
for (int i = 0; i < count; i ) {
b = b.add(a);
list.add(b.setScale(1, RoundingMode.HALF_UP));
}
return list;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/524748.html
標籤:爪哇算法
