前言:
今天姐妹们对“python输入整数x计算112”大概比较关怀,你们都需要知道一些“python输入整数x计算112”的相关内容。那么小编在网上汇集了一些对于“python输入整数x计算112””的相关文章,希望咱们能喜欢,看官们快快来学习一下吧!问题描述:
找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。
//输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。
具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
样例输入:2357
样例输出:
<1>
..775
X..33
-----
.2325
2325.
-----
25575
The number of solutions = 1
这个问题可以采用普通的暴力求解的方法,但是这样的性能非常低,有没有更优雅些的方法呢?答案是有的。
分析: 既然对于其中的所有的中间结果、最终的数以及相应的因子都在输入数的集合当中,那可以将输入的数转换成一个每个字符都重复3次的字符数组,再从字符数组当中挑选出3个字符组合成一个3位数,去掉0开头的字符,当然,包含全部重复和部分重复,如输入的字符集合为12345,那生成的3位数可以是123,112,111,113等。然后在从集合中去掉重复的数值,得到的就是一个候选集合。同理,可以生成一个2位数的候选集合。接下来就是循环嵌套,遍历这两个集合,找出符合条件的解。
具体的算法如下:
1、将输入的数(只能是整数)转换成字符list,并重复3次。因为最大的因数为3位数。
2、从list中选出3个字符,形成一个3位数(不能以0开头),然后进行全排列,得到一个3位数的候选集。同理,可以得到一个2位数的候选集。
3、将这个3位数的list 和2位数的list ,分别遍历,作为乘数和被乘数,过滤出符合条件的乘数和被乘数。
4、输出结果。
核心代码如下:
完整代码见:
标签: #python输入整数x计算112