OJ 移動火柴

2021-09-28 21:35:25 字數 992 閱讀 4048

在正方形的頂點處放上火柴。開始時在第乙個頂點處放1根火柴,其它頂點處空著。移動火柴的規則如下:可以在有火柴的任何頂點處移走任意根數的火柴,並在與之相鄰的兩個頂點處都放上移走火柴數的兩倍。

你的任務是判斷是否經過若干次這樣的做法,使四個頂點(以順時針的順序或逆時針的順序)處的火柴根數為事先指定的四個非負整數a、b、c、d(第乙個數a是第乙個頂點對應的火柴數)。

輸入檔案有若干行,每行上有四個非負整數a、b、c、d,之間用乙個空格隔開,0≤a、b、c、d≤10000。

對輸入中的每行四個整數a、b、c、d,輸出你的判斷結果。如果經過有限次移動火柴後四個頂點處的火柴根數分別為整數a、b、c、d,那麼輸出「yes!」,否則輸出「no!」。

2 1 2 2

0 2 3 2

56 46 95 34

yes!

no!no!

思路**於移動火柴(數學知識)(

補充一點:

t1、t2、t3、t4除了需要非負外,還需要是整數。

顯然,乙個正整數向下取整等於他本身(向上取整亦可)。

在c++中向下取整操作可以通過地板函式floor(x)實現,

即利用floor(t1) == t1來判斷,若true則是整數。

由方程組

解出再代入由方程組得到的關係式

得到t1,t2,t3

ac**:

#include

#include

using

namespace std;

intmain()

}return0;

}

移動火柴(數學知識)

問題描述 在正方形的頂點處放上火柴。開始時在第乙個頂點處放1根火柴,其他頂點處空著。移動火柴規則如下 可以在有火柴的任何頂點處移走任意根數的火柴,並在與之相鄰的兩個頂點處都放上移走火柴數的兩倍。你的任務是判斷是否經過若干次操作,4個頂點 順或逆 處的火柴根數為事先指定的4個非負整數a,b,c,d 第...

移動火柴棍生成最大數和最小數

程式結果 思路分析 實現 public static void main string args private static string max int qian,int bai,int shi,int ge else if shi jian shi else if bai jian bai b...

火柴移動面試題

最近我的乙個朋友找到了乙份工作,採訪公司,我們遇到了乙個火柴棍移動面試題,我覺得有點意思,在此拋磚引玉。題目大致是這種 乙個三個數的式子,移動當中一根火柴。使等式成立。用程式或實現 能夠用偽碼 輸出能成立的等式。注 能夠移走一根火柴變成 比如 廢話不說,直接上 哪位有更好的方法,請分享一下,多謝 i...