有這樣一道奧數(shù)題:有一個(gè)小于500的二位數(shù)abc,對于這個(gè)二位數(shù),甲乙丙丁有著不同的看法。甲說這個(gè)數(shù)能被2整除3次,乙說這個(gè)數(shù)能被二整除2次,丙說這個(gè)數(shù)能被7整除,丁說這個(gè)數(shù)的各位數(shù)字之和為15?,F(xiàn)在甲乙丙丁中有一個(gè)人說了慌,到底誰說了慌呢?如果你找到了正確的答案請求出2'a+b-e的數(shù)值。
已知四人中有一人說了謊,那么說謊人計(jì)算出的數(shù)值肯定和其他二個(gè)人計(jì)算出來的數(shù)值不相同,那么是不是可以采用排除法來嘗試找出說謊的人呢?題目規(guī)定這個(gè)數(shù)小于500那么這個(gè)數(shù)的范圍在100-500之間,用編程讓計(jì)算機(jī)幫我們?nèi)ヒ粋€(gè)個(gè)試算就能找出到底是誰說了謊。
編程時(shí)首先創(chuàng)建百位(a)、十位(b)、個(gè)位(c),還有甲乙丙丁四個(gè)變量,并且設(shè)置一個(gè)循環(huán),將循環(huán)的范圍控制在100-500之間,每循環(huán)一次,將數(shù)值i增加1.
個(gè)位、十位、百位用整除取余的方法提取出來。甲乙丙丁按照題目的要求寫成數(shù)學(xué)表達(dá)式(如圖1)。
接下來我們就可以用假設(shè)法找出到底是誰說謊,假設(shè)甲說了謊,乙丙丁沒有說謊,那么我們需要在100-500之間查看有沒有存在某個(gè)數(shù)字只符合乙丙丁的條件,如果存在該數(shù)字的話便可以輸出正確答案,并確定說謊的是甲,然后根據(jù)要求計(jì)算出2*a+b-e的結(jié)果。
如果試算一輪沒有數(shù)字符合要求,便說明甲沒有說謊,就跳轉(zhuǎn)到第一種假設(shè)判斷乙是否說了謊……這樣用枚舉排除法加上循環(huán)計(jì)算的方法是最為簡單的,按照順序查找是否存在滿足條件的數(shù)字,滿足輸出,不滿足跳出(如圖2)。