Java算法,在线等,回答正确追加满分
来源:百度知道 编辑:UC知道 时间:2024/09/20 11:52:29
Math.scalb(2, n);
貌似没有这个方法。
import java.util.ArrayList;
import java.util.List;
public class ScalbAll {
public static void main(String[] args) {
int result = 49;
List als = new ArrayList();
int n = 0;
while (true) {
double d = Math.scalb(2, n);
if (d > result) {
als.add(n + "");
result = result - (int) Math.scalb(2, n - 1);
n = 0;
} else {
n++;
}
if (result <= 0) {
break;
}
}
for (int i = als.size() - 1; i >= 0; i--) {
System.out.println(als.get(i));
}
}
}
楼上朋友的思路很有意思,我也实现了
List als = new ArrayList();
String str = Integer.toBinaryString(49);
int length = str.length();
for (int i = 0; i < length; i++) {
String tmp = str.substring(i, i + 1);
if ("1".equals(tmp)) {
als.add("" + (length - i - 1));
}
}
for (int i = als.size() - 1; i >= 0; i--) {