#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;

}


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

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