计算糖果
一、直接结合 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; }