每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399
微信发红包的问题,输入两个数m和n,分别表示要发的钱数以及红包总包数,然后输出每个人发到了多少钱。
输入格式:
红包的金额总数
人数
输出格式:
每个人抢到的金额
输入样例:
5.24
输出样例:
0.85 1.74 0.24 2.37
解决方法:
(1)算法的基本思想:
主要用到的是rand()%m这个函数。做题过程中我们还要考虑是不是得保留两位小数,以及保证红包金额不为0等细节。(2)代码实现:
#include<iostream>#include<cstdlib>#include<ctime>usingnamespacestd;intmain(void){double total_money;int n;cout << "请输入红包金额总数:" << endl;cin >> total_money;cout << "请输入人数:" << endl;cin >> n;double m[n]; srand((int)time(0));for(int i = 0; i < n-1; i++){ //分配第1到n-1个金额 double temp;do{//保证红包分配金额不会出现0 temp = rand()%(int)(total_money*100)*0.01; }while(temp >= total_money || temp<=0); total_money = total_money - temp; m[i] = temp; } m[n-1] = total_money;cout << "每个人抢到的金额分别为:" << endl;for(int i = 0; i < n; i++){cout << m[i] << "\t"; }cout << endl;}
实现快速排序的变种。主要改进在于我们以往的pivot总是选第一个或最后一个,而这里需要我们选择的是随机的一个。输入格式:
输入序列的长度
输入序列中的元素
输出格式:
排序后的结果输入样例:
102 5 7 23 15 11 9 4 10 30
输出样例:
2 4 5 7 9 10 11 15 23 30
