计算糖果

计算糖果

一、直接结合 A B C 的取值范围暴力遍历。

#include <iostream>
using namespace std;

int main()
{
    int aMinb, bMinc, aAddb, bAddc;
    int a = 0, b = 0, c = 0;
    cin >> aMinb >> bMinc >> aAddb >> bAddc;
    for(a = 0; a <= 30; a++){
        for(b = 0; b <= 30; b++){
            for(c = 0; c <= 30; c++){
                if(a-b == aMinb && b-c == bMinc && a+b == aAddb && b+c == bAddc){
                    cout << a << " " << b << " " << c << endl;
                    return 0;
                }
            }
        }
    }
    cout << "No" << endl;
    return 0;
}

二、解方程,先把 A B C 的表达式计算出来。

其中 B 计算出来有2个表达式,需要判断2个B是否相等,相等才满足条件。

#include <iostream>
using namespace std;

int main()
{
    int a, b, c, d;
    // A-B B-c A+B B+C
    // 1 3一组 2 4一组
    while(cin >> a >> b >> c >> d)
    {
        int A = (a+c) / 2;
        int B1 = (c-a) / 2;
        int B2 = (d+b) / 2;
        int C = (d - b) / 2;
        if(B1 != B2) // B必须同时2组条件才行
            cout << "No" << endl;
        else
            cout << A << " " << B1 << " " << C << endl;
    }
    return 0;
}