1、商品编号问题

某商品的编号是一个三位数,现有五个三位数:874,765,123,364,925。
其中每个数与商品编号,恰好在同一位上有一个相同的数字,那么这个三位数是?

a = [8, 7, 1, 3, 9] # 百位
b = [7, 6, 2, 6, 2] # 十位
c = [4, 5, 3, 4, 5] # 个位
# 思路2:暴力解法
'''
1、先列出全部的可排列
2、依次比较次数
'''
# 1、全排列(除)
n = set([]) # 放置存在的数
for i in range(5):for j in range(5):if i == j:continueelse:for k in range(5):if i == k or j == k:continueelse:n.add(a[i]*100+b[j]*10+c[k])print("全排列:",n)
print("一共数量:",len(n))
# 2、依次比较次数
for q in n:m = [0, 0, 0, 0, 0] # 用来判断# 每一个用来与百位,十位,个位判断,然后把数输入到m中,最后判断全为1的即为正确答案for p1 in range(5):if a[p1] == q//100:m[p1] = m[p1]+1for p2 in range(5):if b[p2] == q%100//10:m[p2] = m[p2]+1for p3 in range(5):if c[p3] == q%10:m[p3] = m[p3]+1count = 0for w in m:if w == 1:count = count + 1if count == 5:print("三位数是:",q)
'''输出结果:
全排列: {773, 774, 775, 924, 925, 164, 165, 174, 175, 823, 824, 825, 323, 324, 325, 964, 963, 965, 973, 974, 975, 723, 724, 725, 863, 864, 865, 363, 364, 365, 124, 125, 373, 375, 763, 764, 765}
一共数量: 37
三位数是: 724
'''

2、三位数选取问题

从 0、3、5、7 中选出三个数字能排成_______个三位数
其中能被 5 整除的三位数有________个。

# 三个for循环,4的3次方=64次
# 计算三位数
a = [3, 5, 7, 0]
b = []
for i in a:# 位首不为0if i != 0:for j in a:# 十位参数不可反复使用if(i == j):# 相同后,直接下一轮循环,而不是退出循环continueelse:for k in a:# 个位参数不可反复使用if (k == i or k == j):continueelse:c = i*100+j*10+kb.append(c)print('数量:',len(b))
# 计算整除
count = 0
for m in b:if m%5 == 0:count = count + 1print(m, end = ' ')
print()
print('数量:',count)
'''输出结果:
数量: 18
350 375 370 305 530 570 735 730 750 705
数量: 10
'''

3、值勤民警问题

外宾由甲地经乙地、丙地去丁地参观。
甲、乙、丙、丁四地和甲乙、乙丙、丙丁的中点,原来就各有一位民警值勤。
为了保证安全,上级决定在沿途增加值勤民警,并规定每相邻的两位民警(包括原有的民警)之间的距离都相等。
现知甲乙相距 5000 米,乙丙相距 8000 米 丙丁相距4000 米 那么一共至少需要______位民警。

# 思路:先求最大公约数,再用距离相除,最后互相减去1再相加
# 目前已知三个警察,ABC,AB之间相距6500,BC之间相距6000
m = 6500
n = 6000
# 最大公约数:m输入的时候大于n
def GCD(m,n):result = 0while n!=0:result = m%nm = nn = resultreturn ma = GCD(m,n)# 至少需要人员
b = (m//a-1)+(n//a-1)
print('至少需要人员:',b)
'''输出结果:
至少需要人员: 23
'''

4、商店进货问题

某商店有一天,估计将进货单价为 90 元的某商品按 100 元售出后,能卖出 500 个。已知这种商品每个涨价 1 元,其销售量就减少 10 个。为了使这一天能赚得更多利润,售价应定为每个多少元。

# 限制:销售量 > 0 即可; n属于0-50
# 利润:w = (n-90)*(500-(n-100)*10)
# 最开始的w为5000
w = 5000
n = 0
for i in range(100,151):a = (i-90)*(500-(i-100)*10)if a>w:w = an = iprint("售价:",n,";利润为:",w)
'''输出结果:
售价: 120 ;利润为: 9000
'''

5、添加运算符得到结果

在下列算式中合适的地方添上+、-、/、 ×,使等式成立。
2 4 6 8=24

a = [2,4,6,8]
b = ['+','-','x','/']
# 表达式变成后缀表达式
def generate_postfix(infix):"""generate postfix expression str:param infix: infix expression str, like '2x3+8/3':return: postfix expression str, like '23x83/+'infix = []for i in range(4):for j in range(4):for k in range(4):infix.append(2,i,4,j,6,k,8)"""op_rank = {'x': 2, '/': 2, '+': 1, '-': 1}  # 定义加减乘除的优先级stack = []  # 用list模拟栈的后进先出post_list = []for s in infix:if s in '+-x/':  # operator# 栈不为空,且栈顶运算符的优先级高于当前运算符while stack and op_rank.get(stack[-1]) >= op_rank.get(s):  # prioritypost_list.append(stack.pop())stack.append(s)else:  # operandpost_list.append(s)while stack:post_list.append(stack.pop())return ''.join(post_list)# 后缀表达式计算
def calculate_postfix(postfix):"""calculate postfix expression:param postfix: postfix expression str, like '23x83/+':return: int result, like 2x3+8/3=6+2=8"""stack = []  # 用list模拟栈的后进先出for p in postfix:if p in '+-x/':  # operatorvalue_2 = float(stack.pop())  # 第二个操作数# print(value_2)value_1 = float(stack.pop())  # 第一个操作数# print(value_1)if p == '+':result = value_1 + value_2elif p == '-':result = value_1 - value_2elif p == 'x':result = value_1 * value_2else:   # 整除result = value_1 / value_2stack.append(result)# print(stack)else:stack.append(p)return stack.pop()infix = []
for i in b:for j in b:for k in b:c = '2'+i+'4'+j+'6'+k+'8'infix.append(c)for m in infix:a = calculate_postfix(generate_postfix(m))if a == 24.0:print(m,'= 24')
'''输出结果:
2/4x6x8 = 24
'''

【python】奥数题相关推荐

  1. python解奥数题_黄哥Python:Python代码解决一道小学奥数题

    有如下小学奥数题: 有180盏亮着的电灯,各有一个拉线开关控制着,现按其顺序编号 1,2,3, ..., 180, 然后将编号为4的倍数的电灯线拉一下,再将 编号为5的倍数的灯线拉一下,最后将编号为6 ...

  2. 奥数 python_从小学奥数题到Python

    昨天粉丝群里,有个同学抛出了如下一道小学奥数题目: 在下面两个算式中,相同的汉字代表相同的数字(1-9),不同的汉字代表不同的数字: 数*学=花园, 数+学=探秘, 那么"花园探秘" ...

  3. python解奥数题_【新手】小白用python解小学奥数第五集

    前言 因为工作的关系,长期教小学数学奥数,最近接触到python,学到了while:for 语句这里,于是就有了这个想法:用python解奥数题 1. 订立制作目标目标: 打印题目 输入逻辑 输出答案 ...

  4. python解奥数题_#python# 来做奥数题

    ​ 来做几道小学奥数题: 红花映绿叶 * 春 = 叶绿映花红 我们热爱科学 * 学 = 好好好好好好 少年早立志向 + 少年早立志向 = 有志何惧少年 学生 + 好学生 + 三好学生 = 2004 数 ...

  5. Python计算小学奥数题正整数分解为几个整数的倍数和。

    一道小学奥数题如下: 妈妈身上有473元,可以买如下物品,<西游记>70元一套,<三国演义>61元一套,<红楼梦>35元一套,<水浒传>28元一套,&l ...

  6. 用Python解小数奥数题

    大家好,最近初学Python,经常尝试多将Python用于实践,比如解奥数题. 佛山黄老师提供了一个题目:由数字1-9组成的四位整数中,个位上的数字能被千位.百位.十位上的数字的积整除的四位自然数有多 ...

  7. 卷起来了!DeepMind发布媲美普通程序员的AlphaCode,同日OpenAI神经数学证明器拿下奥数题...

    世界本来已经很卷,有了 AI 加入之后,卷上加卷-- >>>> 太卷了! 在国内欢度春节之时,DeepMind 与 OpenAI 两个知名 AI 研究机构分别发布重要研究成果: ...

  8. c语言 奥数题目及答案,科学网—C语言做一道小学奥数题 - 康建的博文

    见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...

  9. HTML页面多个平行四边形,平行四边形奥数题

    小学奥数题:数出有几个平行四边形小学奥数 如果是大平行四边形分成多个小平行四边形,需要先数每边多少条线段. 一边m条小线段,总共有m(m+1)/2条线段, 另一边n条小线段,总共有n(n+1)/2条线 ...

  10. 一个hin秀的小学三年级奥数题 [hin秀]

    ~~~~~~不知为何总会被小学的题虐哭QAQ,真的秀啊,毒害广大小朋友~~~~~~ 一个hin秀的小学三年级奥数题    [hin秀] 题目: 给出一个无限大的棋盘  n×n  (n>0 , 是 ...

最新文章

  1. htaccess分布式配置文件常用写法
  2. 多层神经网络(BP算法)介绍
  3. java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
  4. VC,VB程序button、图标样式美化
  5. 深入浅出 ASP.NET Core 与 Docker 入门课程说明
  6. BZOJ 3329: Xorequ(数位dp+递推)
  7. 企业级应用_浪潮NF8480M5,支撑新时代的企业级应用
  8. 我的内核学习笔记1:字符设备完善
  9. springboot主线程_springboot中的多线程.md
  10. creo扫描选择多条链作为轨迹_Creo与Proe可变截面扫描关系式雨伞建模实例-一加一学院...
  11. 基于PIC单片机USB接口的数据采集系统设计
  12. 万用表怎么测量电池容量_万用表如何测量电池容量?
  13. 整数解(韦达定理解法)
  14. SpringSecurity(安全)、Shiro简介
  15. SpringBoot2——web开发(组件使用)
  16. qlikview中日期问题的两个小结
  17. JAVA 九大排序算法
  18. 【Android实现返回主页,禁止返回上一层等功能】
  19. cocos2dx之Chipmunk
  20. 如何基于Python写一个TCP反向连接后门

热门文章

  1. SpringBoot集成Redis笔记-动力节点王鹤
  2. 【历史上的今天】11 月 27 日:“数字女王”逝世;APL 语言发布;计算机先驱诞生日
  3. 快速排序算法Quicksort()
  4. Java连接Access 2013
  5. 【量子学习笔记】纯态、混合态、直积态及纠缠态的概念区分及理解
  6. Elasticsearch - Elasticsearch集群Cluster(三)
  7. discuz论坛与其它网站登录注册整合
  8. MNN推理引擎框架简介
  9. 如何使用南方CASS制作三维地形
  10. TP TN FP FN IOU