Python|藍橋杯-顛倒的價牌

歡迎點擊「算法與編程之美」↑關注我們!

本文首發於微信公衆號:"算法與編程之美",歡迎關注,及時瞭解更多此係列文章。

歡迎加入團隊圈子!與作者面對面!直接點擊!

問題描述

小李的店裏專賣其它店中下架的樣品電視機,可稱爲:樣品電視專賣店。其標價都是4位數字(即千元不等),小李爲了標價清晰、方便,使用了預製的類似數碼管的標價籤,只要用顏色筆塗數字就可以了。 

圖 1 標價示例

這種價牌有個特點,對一些數字,倒過來看也是合理的數字。如:1 2 5 6 8 9 0 都可以。這樣一來,如果牌子掛倒了,有可能完全變成了另一個價格,比如:1958 倒着掛就是:8561,差了幾千元啊當然,多數情況不能倒讀,比如,1110 就不能倒過來,因爲0不能作爲開始數字。有一天,悲劇終於發生了。某個店員不小心把店裏的某兩個價格牌給掛倒了。並且這兩個價格牌的電視機都賣出去了!慶幸的是價格出入不大,其中一個價牌賠了2百多,另一個價牌卻賺了8百多,綜合起來,反而多賺了558元。

請根據這些信息計算:賠錢的那個價牌正確的價格應該是多少?(答案是一個4位的整數,請通過瀏覽器直接提交該數字。注意:不要提交解答過程,或其它輔助說明類的內容。

解決方案

分析此題,不難發現倒過來合理的數字中只有“6”和“9”顛倒後會改變,而其他的數字不會變,所以問題的考點就在這裏。採用兩個列表來分別存放“0125689”和顛倒後的“0125986”,然後再用幾個for循環來找出兩個顛倒的價格,從題目中可以得知一個和原始價格的差對100取模等於2,另一個等於8,根據這兩個條件就很容易找出這兩個價格了,最後再將得到的所有情況做差,選出差爲558的價格,最後就能選出賠錢的原始價代碼示例:

l = ['0','1','2','5','6','8','9']

l1 = ['0','1','2','5','9','8','6']

l2 = []

l3 = []

for a,o in zip(l[1:],l1[1:]):

    for b,p in zip(l,l1):

        for c,q in zip(l,l1):

            for d,r in zip(l,l1):

                if (int(a+b+c+d)-int(r+q+p+o))//100 == 2:

                    l2.append((a+b+c+d,r+q+p+o))

                if (int(r+q+p+o)-int(a+b+c+d))//100 == 8:

                    l3.append((a+b+c+d,r+q+p+o))

for x in l2:

    for y in l3:

        if int(y[1])-int(y[0])-(int(x[0])-int(x[1])) == 558:

            print(x[0])

            break

圖 2 運行效果

END

實習編輯   |   王文星

責       編   |   江來洪

 where2go 團隊


   

微信號:算法與編程之美          

長按識別二維碼關注我們!

溫馨提示:點擊頁面右下角“寫留言”發表評論,期待您的參與!期待您的轉發!

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