X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
其中的数字代表金属块的重量(计量单位较大)。 最下一层的X代表30台极高精度的电子秤。 假设每块原料的重量都十分精确地平均落在下方的两个金属块上, 最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。 电子秤的计量单位很小,所以显示的数字很大。 工作人员发现,其中读数最小的电子秤的示数为:2086458231 请你推算出:读数最大的电子秤的示数为多少? 注意:需要提交的是一个整数,不要填写任何多余的内容。 我的答案:72665192664 我的思路:把数字直接存入数组,直接复制在控制台,他们本来就是用空格隔开的,比较方便,直接复制粘贴就行 存入数组的形式是: 7 5 8 。。。 这样在数组中从上至下,加上 “上方和左上方”值的一半就行。 最后用 2086458231除以最小值,乘上最大值就行。 代码如下: public static void main(String[] args) { Scanner sc = new Scanner(System.in); double[][] a = new double[30][30]; for (int i = 0; i < a.length-1; i++) { for (int j = 0; j <= i; j++) { a[i][j] = sc.nextInt(); } } for (int i = 1; i < a.length; i++) { for (int j = 0; j <= i; j++) { if(j>0){ a[i][j]+=(double)a[i-1][j-1]*1.0/2+(double)a[i-1][j]*1.0/2; }else if(j==0){ a[i][j]+=(double)a[i-1][j]*1.0/2; } } } for (int i = 0; i < a.length; i++) {//给最后一行排下序 for (int j = 0; j < a.length-1-i; j++) { if(a[29][j]>a[29][j+1]){ double t = a[29][j]; a[29][j] = a[29][j+1]; a[29][j+1] = t; } } } System.out.println((double)2086458231*1.0*a[29][29]/a[29][0]); }