拼多多服务端第三题 求大佬解惑 只过了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); } } }
#拼多多##笔试题目#