給定兩個數a,b,判斷是否可以通過若干個
操作1:選擇乙個數x,a = a - 2x,b = b - x;或
操作2:選擇乙個數x,a = a - x,b = b - 2x;
使a,b都等於0
無論進行多少個操作1,都可以結合成1個,對於操作2也是一樣。
假設a,b滿足要求,操作1所選數字x,操作2所選數為y,那麼
a - 2x - y = 0,b - x - 2y = 0,即
a = 2x + y,b = x + 2y,那麼進行消元
x = (2a - b)/3,y = (2b - a)/3,
所以只要 2a - b 和 2b - a 都不小於0,且都為3的倍數即可。
#include
#include
using
namespace std;
intmain()
return0;
}
最後,希望路過的dl們能給予改進的建議! 2019 GDUT 新生專題 I A
給定n個數字,計算出最短的連續子串行,使這個子串行的全部數字之和大於或等於給定數字s。如果不存在可以滿足題意的子串行則輸出0。這是經典的,相對比較容易的尺取問題,通過遍歷每乙個連續子串行即可得出答案。但是,由於時間的限制,要注意一些已經沒有意義的連續子串行和被重複計算的過程。include incl...
2019 GDUT 新生專題 I B,C
給出n m的乙個地圖,代表著沒有水的陸地,w 代表著水窪,所以相鄰的水窪,包括對角相鄰,形成乙個池塘,要求的就是池塘的數目。通過深度優先搜尋,對每乙個水窪進行遍歷,被遍歷過的水窪被標記為陸地,防止被再次遍歷或者進入死迴圈,每次退出了迴圈則池塘數目加一,直到地圖上沒有水窪。include includ...
2019 GDUT 新生專題 I D,F
給出n個石頭及其每個石頭的價值和重量,選取k個石頭,重量之和不大於給定的w,來做成項鍊,要求構成項鍊的石頭的價值之和最大,輸出這個最大值。include include using namespace std int n,k,want w want w 項鍊不超過的重量 int num 已選的石頭數...