点击查看:蓝桥杯历年真题 题解目录
03 . 承压计算
题目分析+代码
评测标准答案:72665192664
方法一:
1.注意物品的单位和电子称的单位不同
2.数字 29行*29列,开30行30列数组,以便保存最终数据
2.构造二维数组 将数据存入二维数组。双层循环,内循环的循环次数依次增大,
读入数据(直接粘贴29行即可),读入多个空格作为分隔符。
3.更新每一行数组,a[i+1][j] +=a[i][j]/2 ; a[i+1][j+1] += a[i][j]/2;
每一个数据均分给 正下方和右下方的元素。
4.数组最后一行,为称的示数。进行排序。
5.题目给出的最小示数/求得的最小示数 = 单位的倍数
求得的最大示数 * 单位的倍数 = answer;
涉及到除法,可能会出现小数,so用double数据类型
方法二: 先扩大2的30次方倍,再同理计算。
import java.util.Arrays;
import java.util.Scanner;
public class Main003{
static double[][] a = new double[30][30];
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
for(int i=0;i<29;i++)
for(int j=0;j<=i;j++)
a[i][j]=in.nextDouble();
for(int i=0;i<29;i++)
for(int j=0;j<=i;j++){
a[i+1][j] +=a[i][j]/2 ;
a[i+1][j+1] += a[i][j]/2;
}
Arrays.sort(a[29]);
double answer = a[29][29]*(2086458231/a[29][0]);
System.out.println((long)answer);
}
}
为方便大家在IDE上运行,so将数字文本复制到此处。
7
5 8
7 8 8
9 2 7 2
8 1 4 9 1
8 1 8 8 4 1
7 9 6 1 4 5 4
5 6 5 5 6 9 5 6
5 5 4 7 9 3 5 5 1
7 5 7 9 7 4 7 3 3 1
4 6 4 5 5 8 8 3 2 4 3
1 1 3 3 1 6 6 5 5 4 4 2
9 9 9 2 1 9 1 9 2 9 5 7 9
4 3 3 7 7 9 3 6 1 3 8 8 3 7
3 6 8 1 5 3 9 5 8 3 8 1 8 3 3
8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9
8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4
2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9
7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6
9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3
5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9
6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4
2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4
7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6
1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3
2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8
7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9
7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6
5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1