【一本通】分钱游戏


💐The Begin💐点点关注,收藏不迷路💐

甲、乙、丙三人共有 n 元钱,先由甲分钱给乙,丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。求原先各人的钱数分别是多少?

输入

甲、乙、丙三人共有钱数,整数,为3的整数倍。

输出

原先各人的钱数,按5位宽度输出,左对齐

样例输入

24

样例输出

a=13   b=7    c=4

    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main() {
        int n; // 定义变量,用于存储甲、乙、丙三人共有的钱数
        cin >> n; // 从标准输入读取三人共有的钱数
        int final_amount = n / 3; // 经过三次分钱后,每人最终的钱数,因为总钱数最后平均分三份
        int a3 = final_amount / 2; // 第三次分钱前甲的钱数是第三次分钱后钱数的一半,因为丙分给甲后甲的钱数翻倍了
        int b3 = final_amount / 2; // 同理,第三次分钱前乙的钱数是第三次分钱后钱数的一半
        int c3 = n - a3 - b3; // 第三次分钱前丙的钱数,用总钱数减去甲、乙第三次分钱前的钱数
        int a2 = a3 / 2; // 第二次分钱前甲的钱数是第三次分钱前甲钱数的一半,因为乙分给甲后甲的钱数翻倍了
        int c2 = c3 / 2; // 第二次分钱前丙的钱数是第三次分钱前丙钱数的一半,同理
        int b2 = n - a2 - c2; // 第二次分钱前乙的钱数,用总钱数减去甲、丙第二次分钱前的钱数
        int b1 = b2 / 2; // 第一次分钱前乙的钱数是第二次分钱前乙钱数的一半,因为甲分给乙后乙的钱数翻倍了
        int c1 = c2 / 2; // 第一次分钱前丙的钱数是第二次分钱前丙钱数的一半,同理
        int a1 = n - b1 - c1; // 第一次分钱前甲的钱数,用总钱数减去乙、丙第一次分钱前的钱数
        // 使用printf按照紧凑格式输出,%d表示输出整数
        printf(“a=%d b=%d c=%d”, a1, b1, c1); // 输出三人最初的钱数
        return 0;
    }

在这里插入图片描述


💐The End💐点点关注,收藏不迷路💐
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐