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

标题:承压计算

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值