2017年蓝桥杯第三题承压计算

在一个由珍贵金属原料堆砌成的金字塔形结构中,每块金属的重量均匀分配至下方两个金属块,最终所有重量精确平分至底层的30台电子秤。已知最小示数为2086458231,通过编程计算,找出最大示数的电子秤。此问题涉及精确计算和编程技巧。

标题:承压计算

 

X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。

 

每块金属原料的外形、尺寸完全一致,但重量不同。

金属材料被严格地堆放成金字塔形。

其中的数字代表金属块的重量(计量单位较大)。

最下一层的X代表30台极高精度的电子秤。

 

假设每块原料的重量都十分精确地平均落在下方的两个金属块上,

最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。

电子秤的计量单位很小,所以显示的数字很大。

 

工作人员发现,其中读数最小的电子秤的示数为:2086458231

 

请你推算出:读数最大的电子秤的示数为多少?

 

注意:需要提交的是一个整数,不要填写任何多余的内容。

 

解题思路:可以用文件输入,算出最后一排每格子上重量,就是上面的格子的数字平分到下面两个格子中,每个格子也是压着下面一层的两个格子。因为不知道这个秤的计量单位,所以只能比值法求最大值在秤上显示的数字找到最后一排的最小值minn,和最大值maxn,得到ans/maxn = 2086458231/minn

 

#include<iostream>
#include<cstdio>
#include<fstream>
using namespace std;
double arr[35][35];
int main()
{
	freopen("3in.txt", "r", stdin);
	for(int i=1; i<30; ++i){
		for(int j=1; j<=i; ++j){
			cin >> arr[i][j];
		}
	}
	fclose(stdin);
	for(int i=1; i<30; ++i){
		for(int j=1; j<=i; ++j){
			arr[i+1][j] += arr[i][j]/2.0;
			arr[i+1][j+1] += arr[i][j]/2.0;
		}
	}
	double maxn=arr[30][1], minn = arr[30][1];
	for(int i=2; i<=30; ++i){
		maxn = max(maxn, arr[30][i]);
		minn = min(minn, arr[30][i]);
	}
	printf("%lf", 2086458231.0/minn*maxn);
	return 0;
 } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值