标题:承压计算
由于审核时,大段题目 文字和其他文章题目内容 重复,导致审核不过,所以这里题目略:
Ans=72665192664
#include <iostream>
using namespace std;
/* 因此,在输入金属块重量时,同时乘以 2^30 ,这样二分质量时就不会 出现小数,
最后 计算电子秤 缩小的倍率 才会精确。
最终的 最大示数值= 最大读数*电子秤的倍率(即 最小示数/最小度数 )。
*/
typedef long long LL;
LL arr[30][30];
void Read(){
LL factor=1;
for(int i=1;i<=30;i++)
factor*=2;
// factor=2^30
for(int i=0;i<30-1;i++){//读取前29行有数字的数据
for(int j=0;j<=i;j++){
LL temp;
cin>>temp;
arr[i][j]=temp*factor;
}
}
}
void calWeight(){
for(int i=0;i<30-1;i++){//第0~29行
for(int j=0;j<=i;j++){//将当前位置的重量一分为二 分给 下面的两个金属块
arr[i+1][j]+=arr[i][j]/2;
arr[i+1][j+1]+=arr[i][j]/2;
}
}
}
void getFinalRes(){
LL minW=2e40,maxW=0;
for(int i=0;i<30;i++){
if(arr[29][i]<minW)
minW=arr[29][i];
if(arr[29][i]>maxW)
maxW=arr[29][i];
}
cout<<"minW="<<minW<<",maxW="<<maxW<<endl;
LL realMinW=2086458231;
LL realMaxW=maxW/(minW/realMinW);
cout<<"realMaxW="<<realMaxW<<endl;
}
int main()
{
Read();
calWeight();
getFinalRes();
cout << "Hello world!" << endl;
return 0;
}