原题链接:蓝桥杯算法提高VIP-排列式
解题思路:
注意事项:
参考代码:
import itertools #生成由1到9构成的不同四位数,tertools.permutations中生成的一个元素是这种('1','2','3','4')的元组,然后join连接成'1234'再转为int 1234 mulit=[int(''.join(j)) for j in itertools.permutations([str(i) for i in range(1,10)],4)] nums=[str(i) for i in range(1,10)] for m in mulit: #右边(一定是四位数)=一位数X四位数 or 两位数X 三位数,只有这两种可能 for i in range(2,99): #判断能否整除 if m%i==0: $如果能够整除看看这三个数是不是构成1,2,3,4,5,6,7,8,9(这里set比较和顺序无关) if set(list(str(m))+list(str(i))+list(str(m//i)))==set(nums): print('{} = {} x {}'.format(m,i,m//i))
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复