B2020 题解-mnesia

· · 题解

这道题由于题目给定了小朋友的数量为 5,因此直接模拟即可。

我的思路是在分糖果之前先把吃掉的糖果通过对 3 取余算出并加到 sum 变量中,之后直接除 3,所得的数加到相邻的小朋友的糖果数中。

在代码中,我运用了花括号框起,这样可以明显地标识出每个小朋友分糖果的情况。

#include <iostream>
#include <stdio.h>
using namespace std;
int sum, a[6];
int main()
{
    cin >> a[1] >> a[2] >> a[3] >> a[4] >> a[5];
    {
        sum += a[1] % 3;
        a[1] /= 3;
        a[5] += a[1];
        a[2] += a[1];
    }
    {
        sum += a[2] % 3;
        a[2] /= 3;
        a[3] += a[2];
        a[1] += a[2];
    }
    {
        sum += a[3] % 3;
        a[3] /= 3;
        a[4] += a[3];
        a[2] += a[3];
    }
    {
        sum += a[4] % 3;
        a[4] /= 3;
        a[5] += a[4];
        a[3] += a[4];
    }
    {
        sum += a[5] % 3;
        a[5] /= 3;
        a[1] += a[5];
        a[4] += a[5];
    }
    cout << a[1] << " " << a[2] << " " << a[3] << " " << a[4] << " " << a[5] << endl;
    cout << sum;
    return 0;
}