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)相关推荐

  1. ACWING蓝桥杯每日一题python

    ACWing蓝桥杯每日一题 一直没时间去总结算法,终于有空可以总结一下刷的acwing了,因为没时间所以最近只刷了ACWING的蓝桥杯每日一题...真是该死 1.截断数组 首先我们要知道,如果sum( ...

  2. 【C语言蓝桥杯每日一题】—— 单词分析

    [C语言蓝桥杯每日一题]-- 单词分析

  3. 【C语言蓝桥杯每日一题】——跑步锻炼

    [C语言蓝桥杯每日一题]-- 跑步锻炼

  4. 【C语言蓝桥杯每日一题】—— 既约分数

    [C语言蓝桥杯每日一题]-- 既约分数

  5. 蓝桥杯每日一题(22):三升序列(python)

    Topic [问题描述] 对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向右看.或者从上向下看是递增的. 例如 ...

  6. 【蓝桥杯选拔赛真题17】Scratch金字塔 少儿编程scratch蓝桥杯选拔赛真题讲解

    目录 Scratch金字塔 一.题目要求 1.准备工作 2.编程实现 二.题目分析 1.角色分析 2.背景分析 3.准备工作 三.解题思路 1.流程分析 2.流程图绘制 四.程序编写 五.考点分析 六 ...

  7. 蓝桥杯每日真题之直线

    题目来源 2021年蓝桥杯省赛 题目链接:http://acm.mangata.ltd/p/P1485 考点 数学.暴力 视频讲解 https://www.bilibili.com/video/BV1 ...

  8. 蓝桥杯每日真题之货物摆放

    题目来源 2021年蓝桥杯省赛 题目链接:https://www.lanqiao.cn/problems/1463/learning/ 考点 数论.暴力 视频讲解 https://www.bilibi ...

  9. 【蓝桥杯每日一题】----纸张尺寸

    题目 在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm × 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm × 594mm, 在对折的过程中长度直接取 下整 ...

最新文章

  1. STM32外部中断与各通道对应关系
  2. SAP Spartacus checkout Shipping address的页面实现
  3. idea gblfy常用快捷键
  4. 嵌入式如何移植php,关于嵌入式web服务器的移植
  5. 一个表的信息插入到另一个表里面,如果遇到重复的就覆盖
  6. golang垃圾回收MySQL_Go语言垃圾回收和SetFinalizer
  7. 算法(四):图解狄克斯特拉算法
  8. 【剑指Offer】青蛙跳台阶问题
  9. 线性代数-线性转化和矩阵
  10. 软考中的网络工程师难考吗?
  11. 讯时网站管理系统通杀0DAY漏洞
  12. 使用jQuery Mobile和Phone Gap开发Android应用程序
  13. 我从《阿里云:人工智能应用实践与趋势》白皮书学到了什么?
  14. CCNET的参考文件
  15. 面试题:进程间通信的方式
  16. 2021自动化保研夏令营汇总
  17. Windows和Ubuntu双系统双引导教程
  18. 计算机端口原理与作用
  19. 多多情报通:拼多多两天没发货会怎样处理?延迟交货怎么办?
  20. 城市智慧交通规划方案

热门文章

  1. java中判断对象中某个属性是否为空
  2. 奇门遁甲八卦九宫八门九星分布图
  3. 如何在python中表示微分_Python实现自动微分(Automatic Differentiation)
  4. 关于在mathtype中输入微分符号点
  5. 解析几何复习(二)正交变换和仿射变换
  6. 1、软件项目规划过程——所有表集合
  7. 三菱PLC的MC协议配置说明
  8. 【微信小程序】微信小程序读取本地文件--学习微信小程序之路02
  9. 以太坊社区激励金计划:支持开发者利用去中心化技术改变世界
  10. 亲,你心念念的Axure9.0来了,请查收~ 内附Axure安装包+汉化包+授权码获取方式