用c++编程实现微信红包程序:给定一个钱数m发红包人数n其中10=m n=200将钱数拆成几个指定的吉利数如166168 168178178188188199520066666660080888888809999999并发出要求要发出n个红包分布比较均匀并尽可能把钱发完。
以下是一个可能的实现:
#include
using namespace std;
// 吉利数列表
const vector
// 生成随机数的函数
double random(double min, double max) {
random_device rd;
mt19937 gen(rd());
uniform_real_distribution
int main() { // 获取钱数和红包人数 double m; int n; cout << "请输入钱数:"; cin >> m; cout << "请输入红包人数:"; cin >> n;
// 生成吉利数的数组
vector<double> luckyAmounts;
for (double num : luckyNums) {
if (num <= m / n) { // 只选择小于等于平均值的吉利数
luckyAmounts.push_back(num);
}
}
// 计算吉利数的总和
double luckySum = 0;
for (double amount : luckyAmounts) {
luckySum += amount;
}
// 计算剩余的钱数
double remaining = m - luckySum;
// 将剩余的钱数平均分配到每个红包中
double avgAmount = remaining / n;
// 输出结果
cout << fixed << setprecision(2); // 设置输出格式
cout << "吉利数总和:" << luckySum << endl;
cout << "剩余金额:" << remaining << endl;
cout << "平均每个红包金额:" << avgAmount << endl;
cout << "各个红包金额:" << endl;
for (int i = 0; i < n; i++) {
double amount;
if (i < luckyAmounts.size()) { // 如果还有吉利数,则随机选择一个吉利数
amount = luckyAmounts[i];
} else { // 否则分配平均值
amount = avgAmount;
}
// 在分配的金额基础上添加一些随机波动
amount += random(-0.01, 0.01);
cout << amount << endl;
}
return 0;
原文地址: https://www.cveoy.top/t/topic/eEU7 著作权归作者所有。请勿转载和采集!