以下是一个可能的实现:

#include #include #include #include

using namespace std;

// 吉利数列表 const vector luckyNums = {1.66,1.68,16.8,1.78,17.8,1.88,18.8,1.99,5.20,0.66,6.6,6.66,0.08,0.88,8.8,8.88,0.99,9.9,9.99};

// 生成随机数的函数 double random(double min, double max) { random_device rd; mt19937 gen(rd()); uniform_real_distribution dis(min, max); return dis(gen); }

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;
用c++编程实现微信红包程序:给定一个钱数m发红包人数n其中10=m n=200将钱数拆成几个指定的吉利数如166168 168178178188188199520066666660080888888809999999并发出要求要发出n个红包分布比较均匀并尽可能把钱发完。

原文地址: https://www.cveoy.top/t/topic/eEU7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录