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

京公网安备 11010502036488号