当前位置: 代码迷 >> 综合 >> (试题解析2th)蓝桥杯历届试题\第八届蓝桥杯大赛个人赛省赛(软件类)真题\0-试题\C语言B组\3
  详细解决方案

(试题解析2th)蓝桥杯历届试题\第八届蓝桥杯大赛个人赛省赛(软件类)真题\0-试题\C语言B组\3

热度:99   发布时间:2024-01-21 19:53:49.0

标题:承压计算

由于审核时,大段题目 文字和其他文章题目内容 重复,导致审核不过,所以这里题目略:
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^30for(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;
}

 

  相关解决方案