2013\Province_C_C++_A\4.颠倒的价牌
生活随笔
收集整理的這篇文章主要介紹了
2013\Province_C_C++_A\4.颠倒的价牌
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
小李的店里專賣其它店中下架的樣品電視機,可稱為:樣品電視專賣店。
其標(biāo)價都是4位數(shù)字(即千元不等)。
小李為了標(biāo)價清晰、方便,使用了預(yù)制的類似數(shù)碼管的標(biāo)價簽,只要用顏色筆涂數(shù)字就可以了。
這種價牌有個特點,對一些數(shù)字,倒過來看也是合理的數(shù)字。如:1 2 5 6 8 9 0 都可以。這樣一來,如果牌子掛倒了,有可能完全變成了另一個價格,比如:1958 倒著掛就是:8561,差了幾千元啊!!
當(dāng)然,多數(shù)情況不能倒讀,比如,1110 就不能倒過來,因為0不能作為開始數(shù)字。
有一天,悲劇終于發(fā)生了。某個店員不小心把店里的某兩個價格牌給掛倒了。并且這兩個價格牌的電視機都賣出去了!
慶幸的是價格出入不大,其中一個價牌賠了2百多,另一個價牌卻賺了8百多,綜合起來,反而多賺了558元。
請根據(jù)這些信息計算:賠錢的那個價牌正確的價格應(yīng)該是多少?
答案是一個4位的整數(shù),請通過瀏覽器直接提交該數(shù)字。
注意:不要提交解答過程,或其它輔助說明類的內(nèi)容。
Code
def checkNumber(num):"""顛倒價牌數(shù)字必須是1 2 5 6 8 9 0,并且最后一位不能是0"""strNum = list(str(num))if strNum[-1] == '0':return Falseif '3' in strNum or '4' in strNum or '7' in strNum:return Falsereturn Truedef reversePrice(price):strPrice = list(str(price))strPrice.reverse()for i in range(len(strPrice)):if strPrice[i] == '6':strPrice[i] = '9'elif strPrice[i] == '9':strPrice[i] = '6'return int(''.join(strPrice))if __name__ == '__main__':# 價格都是四位數(shù),所以兩層循環(huán)遍歷所有的四位數(shù)表示兩個價格for lose in range(1000, 10000):if checkNumber(lose):reverseLose = reversePrice(lose)if 200 < lose - reverseLose < 300:for make in range(1000, 10000):if checkNumber(make):reverseMake = reversePrice(make)if 800 < reverseMake - make < 900:if (reverseMake - make) - (lose - reverseLose) == 558:print(f'lose = {lose}, make = {make}, reverseLose = {reverseLose}, reverseMake = {reverseMake}')print(f'lose - reverseLose = {lose - reverseLose}, reverseMake - make = {reverseMake - make}')Answer:9088
總結(jié)
以上是生活随笔為你收集整理的2013\Province_C_C++_A\4.颠倒的价牌的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 114. Flatten Binary
- 下一篇: 2013\Province_C_C++_