给定一个长度为n的数组A,它的每一个元素是一个正整数,表示一条绳子的长度,现在想要把这些绳子剪成不少于m段的短绳,并且要求这m段短绳的长度都是x,求x的最大值。注意绳子只能被剪,不能被粘贴, x的值精确到小数点后两位。
给定一个长度为n的数组A,它的每一个元素是一个正整数,表示一条绳子的长度,现在想要把这些绳子剪成不少于m段的短绳,并且要求这m段短绳的长度都是x,求x的最大值。注意绳子只能被剪,不能被粘贴, x的值精确到小数点后两位。
输入有两行,第一行是两个整数,分别表示m和n的值,第二行是n个整数,表示n个绳子的长度。
x的最大值,x的值精确到小数点后两位
3 5 12 6 8 4 9
8.00
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] strMN = br.readLine().trim().split(" ");
int m = Integer.parseInt(strMN[0]), n = Integer.parseInt(strMN[1]);
String[] strArr = br.readLine().trim().split(" ");
int[] strings = new int[n];
for(int i = 0; i < n; i++) strings[i] = Integer.parseInt(strArr[i]);
// 先对绳子进行排序
Arrays.sort(strings);
int pos;
// 然后遍历,直到长度大于等于strings[pos]的绳子不足m条
for(pos = 0; pos < n; pos++)
if(n - pos < m) break;
System.out.printf("%.2f", (double)strings[pos - 1]);
}
}