2011-03-29 21 views
2

編寫一個程序,找到兩個數字A和B(不要搜索網頁, ,不要嘗試'手動'),以便我們得到一個兩位數字AB(比如說 A = 8 ,B = 9,那麼數字是89),所以AB * AB = CAB代表 的一些數字C.因此,如果你方形AB,你會得到一個3位數的數字。在AB的 最後兩個數字^ 2是AB,但第一個數字是一些C可能 無關一定要A或B.找到兩位數python的結果

+7

對不起,但你需要做你自己的功課...任何值得他的鹽的程序員會立即認識到作爲一個家庭作業問題的措辭:-) – 2011-03-29 03:08:34

+3

不要搜索網絡,不要嘗試'手動',不要提出問題他們應該添加 – thaolt 2011-03-29 03:13:15

+3

看,我們是一個友好的羣體,我們會很樂意幫助他們做家庭作業,當他們表明他們已經嘗試並被卡住了。這甚至不嘗試。這是數學課,你應該考慮數字嗎?或者這是一個編程課程,你應該寫一個蠻力算法來搜索所有89個可能性來找到正確的答案? – sarnold 2011-03-29 03:19:01

回答

2

在僞代碼,你可以簡單地這樣做:

def findAB (c): 
    c = c multiplied by 100 
    for a in 0..9: # or possibly 1..9 
     for b in 0..9: 
      set ab to a multiplied by 10 plus b 
      if (ab multiplied by ab) is equal to (c plus ab): 
       return (a,b) 
    return nothing 

我的首選僞代碼語言已經足夠接近Python,它不應該也是難以轉換,但你的第一步應該是理解它的工作原理。爲此,你應該在你的腦袋上運行的代碼,填寫變量表所示:

c | a | b | ab | return 
-----+-----+-----+------+---------- 
    |  |  |  | 
    |  |  |  | 
    |  |  |  | 
    |  |  |  | 

你開始思考像一臺機器越快越好程序員你會成爲 - 只要確保你不」牛逼啓動了所有的社交技巧不過,他們還是會派上用場,在某些點在你的生活:-)

+0

謝謝我在代碼中理解得更好:) – Gabby 2011-03-29 03:34:02

2

簡單,代碼:

for a in range(1,10): 
    for b in range(10): 
     ab = a*10+b 
     ab2 = ab*ab 
     if (ab2 % 100) == ab: 
      print "a=",a,", b = ",b 
+0

我希望他不想在這裏得到絕對的價值。也許重命名'abs'到'ab2'。 – PaulMcG 2011-03-29 13:14:23

+0

謝謝@Paul McGuire,我同意!我已經修改了答案。 – highBandWidth 2011-03-29 19:06:36

0

作爲替代蠻力,需要兩個分鐘並思考問題。想想A - A可能是最小的數字是多少?什麼是最大的?想想B - B有一些特殊的東西,一些特殊的屬性只有10個數字中有4個具有。最後,您仍然需要循環使用A和B的幾組數字,但是如果您只使用一組可能的數字,則會顯示您已將一些明智的想法應用到解決方案中。正如我之前所說的,這個問題可以推廣到一些有趣的大案例中,例如,您可以找到一個數字ABCDEF,它在平方時給出###### ABCDEF。

獎勵:你認爲有這個屬性的最大可能數量?