牛客網——C++計算糖果【完整分析加代碼】

一,題目描述
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;
}

四,運行結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章