2013\Province_C_C++_A\4.颠倒的价牌
生活随笔
收集整理的這篇文章主要介紹了
2013\Province_C_C++_A\4.颠倒的价牌
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小李的店里專賣其它店中下架的樣品電視機,可稱為:樣品電視專賣店。
其標價都是4位數字(即千元不等)。
小李為了標價清晰、方便,使用了預制的類似數碼管的標價簽,只要用顏色筆涂數字就可以了。
這種價牌有個特點,對一些數字,倒過來看也是合理的數字。如:1 2 5 6 8 9 0 都可以。這樣一來,如果牌子掛倒了,有可能完全變成了另一個價格,比如:1958 倒著掛就是:8561,差了幾千元啊!!
當然,多數情況不能倒讀,比如,1110 就不能倒過來,因為0不能作為開始數字。
有一天,悲劇終于發生了。某個店員不小心把店里的某兩個價格牌給掛倒了。并且這兩個價格牌的電視機都賣出去了!
慶幸的是價格出入不大,其中一個價牌賠了2百多,另一個價牌卻賺了8百多,綜合起來,反而多賺了558元。
請根據這些信息計算:賠錢的那個價牌正確的價格應該是多少?
答案是一個4位的整數,請通過瀏覽器直接提交該數字。
注意:不要提交解答過程,或其它輔助說明類的內容。
Code
def checkNumber(num):"""顛倒價牌數字必須是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__':# 價格都是四位數,所以兩層循環遍歷所有的四位數表示兩個價格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
總結
以上是生活随笔為你收集整理的2013\Province_C_C++_A\4.颠倒的价牌的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 114. Flatten Binary
- 下一篇: CVAT 用户指南