2018招行笔试分红包

输入红包总金额、人数、最小面额、最大面额、(第一个人默认拿到一块钱);

输出每个人获得的红包价格,以及获得红包最多的序号;

输入

输出

#include<iostream>
#include <vector>
#include <iomanip>
#include <algorithm>

using namespace std;

int min(int a,int b);

double randf(double Max,double Min,int num,double total);
int main(){
 int people,max_index;
 double money,Max,Min,Max_v;
 cout<<"输入总金额:";
    cin>>money;
    cout<<"输入总人数:";
 cin>>people;
    cout<<"输入最小值:";
    cin>>Min;
    cout<<"输入最大值:";
    cin>>Max;
    vector<float> hongbao_value=vector<float>(people);
    hongbao_value[0]=1;
    cout<<"抢红包结果如下:"<<endl;
    cout<<"第 1个人抢到的红包金额为 1.00,红包剩余金额为 "<<fixed<<setprecision(2)<<money-1.00<<endl;
    for(int i=1;i<people-1;i++){
        money=money-hongbao_value[i-1];
        hongbao_value[i]= randf( Max,Min,people-i+1,money);
        cout<<"第 " <<i+1<<"个人抢到的红包金额为 "<<fixed<<setprecision(2)<<hongbao_value[i]<<",红包剩余金额为 "<<money-hongbao_value[i]<<endl;
    }
    hongbao_value[people-1]=money;
    cout<<"第 " <<people<<"个人抢到的红包金额为 "<<fixed<<setprecision(2)<<money-hongbao_value[people-2]<<",红包剩余金额为 "<<"0.00"<<endl;
    vector<int> zs_value=vector<int>(people);
    for (int j = 0; j <people ; ++j) {
        zs_value[j]=int(hongbao_value[j]*100);
    }
    Max_v=*max_element(zs_value.begin(),zs_value.end())*1.0/100;
    max_index=max_element(zs_value.begin(),zs_value.end())-zs_value.begin();
    cout<<"抢到红包金额最多的是"<<max_index+1<<"号";
    return 0;
}
double randf(double Max,double Min,int num,double total)
{
    double output=(double)(rand()/(double)(Max-Min))+(double)Min;
    output=long(output*100)*1.0/100;
    if ((total-output)<(Min*(num-1)))
        return  randf( Max,Min,num,total);
    else return output;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值