前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|蓝桥杯-颠倒的价牌

Python|蓝桥杯-颠倒的价牌

作者头像
算法与编程之美
发布2020-06-04 09:40:50
4120
发布2020-06-04 09:40:50
举报
文章被收录于专栏:算法与编程之美

问题描述

小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。其标价都是4位数字(即千元不等),小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了。

图 1 标价示例

这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊! 当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了!庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。

请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?(答案是一个4位的整数,请通过浏览器直接提交该数字。注意:不要提交解答过程,或其它辅助说明类的内容。)

解决方案

分析此题,不难发现倒过来合理的数字中只有“6”和“9”颠倒后会改变,而其他的数字不会变,所以问题的考点就在这里。采用两个列表来分别存放“0,1,2,5,6,8,9”和颠倒后的“0,1,2,5,9,8,6”,然后再用几个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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档