蓝桥杯每日一题(17):神奇算式(python)
Topic
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。
Solution_1
利用全排列先将四位数字进行全排列
并将首位是0的情况进行排除
在正式判断前需提前考虑交换律
如果是三位数乘一位数
则只需在三位数乘一位数时在结果中加一
交换后变为一位数乘三位数则无需添加和判断
同时也避免了交换律的重复
之后就是正式的判断
对于三位数乘一位数
首先需要将排列的数字输出为三位数乘一位数字后的ans_1
为了判断“乘积仍然由这4个数字组成”需将四个数字设置成列表b
只要四个数字中在b中存在就在b中删除
当b完全为空则证明“乘积仍然由这4个数字组成”的要求
结果count + 1
对于两位数乘两位数
判断过程与三位数乘一位数相同
但是为了满足交换后仅计算一次的情况
需提前设置had列表
将满足条件的结果每次加入到had中
若ans_2不在had中则满足交换律仅计算一次的条件
最后输出count 的值即位结果
Code_1
import itertoolscount = 0
a = itertools.permutations([i for i in range(0, 10)], 4)
had = []for i in a:if i[0] == 0:continueb = list(str(i[0]) + str(i[1]) + str(i[2]) + str(i[3]))ans_1 = int(str(i[0]) + str(i[1]) + str(i[2])) * i[3]for j in str(ans_1):if j in b:b.remove(j)if not b:count += 1b = list(str(i[0]) + str(i[1]) + str(i[2]) + str(i[3]))ans_2 = int(str(i[0]) + str(i[1])) * int((str(i[2]) + str(i[3])))for x in str(ans_2):if x in b:b.remove(x)if not b and ans_2 not in had:had.append(ans_2)count += 1print(count)
Solution_2:
第二种其实是一个逆向的思路
所有四个数字的乘积均为一个四位数
只要满足四位数中的四个数字不重复的数字
均可能为我们要求的四位数
所以我们可以对满足条件的四位数字中四个数字进行全排列
排列后思路与Solution_1中相同
判断交换律的思路也与Solution_1中相同
最后输出 coun 的值t即完成
Code_2:
count = 0
had = []for i in range(1000, 10000):a = list(str(i))if a[0] != a[1] != a[2] != a[3]:b = itertools.permutations(a)for j in b:if int(j[0] + j[1] + j[2]) * int(j[3]) == i:count += 1elif int(j[0] + j[1]) * int(j[2] + j[3]) == i and int(j[0] + j[1]) * int(j[2] + j[3]) not in had:had.append(i)count += 1print(count)
Answer
12
蓝桥杯每日一题(17):神奇算式(python)相关推荐
- ACWING蓝桥杯每日一题python
ACWing蓝桥杯每日一题 一直没时间去总结算法,终于有空可以总结一下刷的acwing了,因为没时间所以最近只刷了ACWING的蓝桥杯每日一题...真是该死 1.截断数组 首先我们要知道,如果sum( ...
- 【C语言蓝桥杯每日一题】—— 单词分析
[C语言蓝桥杯每日一题]-- 单词分析
- 【C语言蓝桥杯每日一题】——跑步锻炼
[C语言蓝桥杯每日一题]-- 跑步锻炼
- 【C语言蓝桥杯每日一题】—— 既约分数
[C语言蓝桥杯每日一题]-- 既约分数
- 蓝桥杯每日一题(22):三升序列(python)
Topic [问题描述] 对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向右看.或者从上向下看是递增的. 例如 ...
- 【蓝桥杯选拔赛真题17】Scratch金字塔 少儿编程scratch蓝桥杯选拔赛真题讲解
目录 Scratch金字塔 一.题目要求 1.准备工作 2.编程实现 二.题目分析 1.角色分析 2.背景分析 3.准备工作 三.解题思路 1.流程分析 2.流程图绘制 四.程序编写 五.考点分析 六 ...
- 蓝桥杯每日真题之直线
题目来源 2021年蓝桥杯省赛 题目链接:http://acm.mangata.ltd/p/P1485 考点 数学.暴力 视频讲解 https://www.bilibili.com/video/BV1 ...
- 蓝桥杯每日真题之货物摆放
题目来源 2021年蓝桥杯省赛 题目链接:https://www.lanqiao.cn/problems/1463/learning/ 考点 数论.暴力 视频讲解 https://www.bilibi ...
- 【蓝桥杯每日一题】----纸张尺寸
题目 在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm × 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm × 594mm, 在对折的过程中长度直接取 下整 ...
最新文章
- STM32外部中断与各通道对应关系
- SAP Spartacus checkout Shipping address的页面实现
- idea gblfy常用快捷键
- 嵌入式如何移植php,关于嵌入式web服务器的移植
- 一个表的信息插入到另一个表里面,如果遇到重复的就覆盖
- golang垃圾回收MySQL_Go语言垃圾回收和SetFinalizer
- 算法(四):图解狄克斯特拉算法
- 【剑指Offer】青蛙跳台阶问题
- 线性代数-线性转化和矩阵
- 软考中的网络工程师难考吗?
- 讯时网站管理系统通杀0DAY漏洞
- 使用jQuery Mobile和Phone Gap开发Android应用程序
- 我从《阿里云:人工智能应用实践与趋势》白皮书学到了什么?
- CCNET的参考文件
- 面试题:进程间通信的方式
- 2021自动化保研夏令营汇总
- Windows和Ubuntu双系统双引导教程
- 计算机端口原理与作用
- 多多情报通:拼多多两天没发货会怎样处理?延迟交货怎么办?
- 城市智慧交通规划方案
热门文章
- java中判断对象中某个属性是否为空
- 奇门遁甲八卦九宫八门九星分布图
- 如何在python中表示微分_Python实现自动微分(Automatic Differentiation)
- 关于在mathtype中输入微分符号点
- 解析几何复习(二)正交变换和仿射变换
- 1、软件项目规划过程——所有表集合
- 三菱PLC的MC协议配置说明
- 【微信小程序】微信小程序读取本地文件--学习微信小程序之路02
- 以太坊社区激励金计划:支持开发者利用去中心化技术改变世界
- 亲,你心念念的Axure9.0来了,请查收~ 内附Axure安装包+汉化包+授权码获取方式