一,題目描述
A,B,C三個人是好朋友,每個人手裏都有一些糖果,我們不知道他們每個人手上具體有多少個糖果,但是我們知道以下的信息:
A - B, B - C, A + B, B + C. 這四個數值.每個字母代表每個人所擁有的糖果數.
現在需要通過這四個數值計算出每個人手裏有多少個糖果,即A,B,C。這裏保證最多隻有一組整數A,B,C滿足所有題設條件。
輸入描述:
輸入爲一行,一共4個整數,分別爲A - B,B - C,A + B,B + C,用空格隔開。 範圍均在-30到30之間(閉區間)。
輸出描述:
輸出爲一行,如果存在滿足的整數A,B,C則按順序輸出A,B,C,用空格隔開,行末無空格。 如果不存在這樣的整數A,B,C,則輸出No
示例1
輸入
1 -2 3 4
輸出
2 1 3
二,程序解決分析步驟總結
1,根據題意,首先創建四個變量將這幾個數字表達式表示出來。
2,然後給這四個變量進行賦值輸入,通過數學的三元一次方程的解的方法,列出表達式。
3,最後通過計算,完成求解。
細節:
(a):三元一次方程,比如這樣;1+3 可以得到A=(a+c)/2;4-2可以得到C=(d-b)/2;2+4可以得到B2=(b+d)/2等。
(b):就是B1,B2,因爲A,C算出來就算有一個解,但是B不止一個,所以判斷一下,B才能正確
三,程序代碼
#include<iostream>
using namespace std;
int main()
{
//首先創建四個變量將這幾個數表示出來
int A = 0, B = 0, B1 = 0, B2 = 0, C = 0, a, b, c, d;
a = A - B;
b = B - C;
c = A + B;
d = B + C;
//給這四個變量進行輸值;
cin >> a >> b >> c >> d;
if (-30 <= a <= 30 && -30 <= b <= 30 && -30 <= c <= 30 && -30 <= a <= 30)
{
//這裏有個細節,就是B1,B2,因爲A,C算出來就算有一個解,但是B不止一個,所以判斷一下,B才能正確
A = (a + c) / 2;
C = (d - b) / 2;
B1 = (c - a) / 2;
B2 = (b + d) / 2;
if (B1 != B2)
{
cout << "No" << endl;
}
cout << A << " " << B1 << " " << C;
}
return 0;
}
四,運行結果