拼多多服务端第三题 求大佬解惑 只过了10% 气死了
import java.text.DecimalFormat;
import java.util.*;
public class Main2 {
public void pdd2(int[] nums) {
DecimalFormat df = new DecimalFormat("0.00");
Arrays.sort(nums);
int base = get_count(nums,-1);
//System.out.println(Arrays.toString(nums));
int result = 0;
int last_index = nums.length - 1;
while(nums[last_index]!=1){
int count = get_count(nums,last_index);
result += count*nums[last_index];
System.out.println(nums[last_index]+" "+count);
nums[last_index]--;
while(last_index - 1>= 0 && nums[last_index] < nums[last_index - 1]){
my_swap(nums,last_index,last_index - 1);
last_index--;
}
last_index = nums.length - 1;
}
result+=1;
double final_result = result*1.0/base;
System.out.println(df.format(final_result));
}
public int get_count(int[] nums,int except_index){
int result = 1;
for (int i = 0; i < nums.length; i++) {
if(i == except_index)continue;
result*=nums[i];
}
return result;
}
public void my_swap(int[] nums,int a,int b){
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
public static void main(String[] args) {
Main2 main = new Main2();
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
int[] nums = new int[num];
while (scanner.hasNextLine()) {
String[] strs = scanner.nextLine().split(" ");
for (int i = 0; i < num; i++) {
nums[i] = Integer.parseInt(strs[i]);
}
main.pdd2(nums);
}
}
}
#拼多多##笔试题目#