小博是新城小学二年级学生,这孩子人很老实,数学、语文成绩也是中等水平。不过一旦坐在电脑前,写起代码来,则有些霸气侧漏,尤其擅长各种暴力方法。本题就是数学莫老师的题目之一,请你和小博一起暴力求解吧。
输入格式:
输入是这个差D(图中例子的差D为93),D为正整数。
输出格式:
第一行输出所有解的数目K,随后K行按照被减数从小到大的顺序输出所有解。
输入样例:
例如输入:
93
输出样例:
输出:
4
246-153
354-261
516-423
624-531
代码实现
D = int(input()) # 输入差值
lis = [1,2,3,4,5,6]
lis1 = [0]*6 # 用来临时存放解
number = 0 # 计算解的个数
lis2 = [] # 放置最终符合要求的解
# 暴力循环所有组合求解
for i in range(0,len(lis)):
lis1[0] = lis[i] # 放入第一个数
for k in range(0,len(lis)):
if lis[k] != lis1[0]: # 放入第二个数,不能与前一个相同
lis1[1] = lis[k]
else :# 如果相同,则依次选取后一个数
continue
for j in range(0,len(lis)):
if lis[j] != lis1[0] and lis[j] != lis1[1]: # 放入第三个数,不能与前面的相同,后面依次类推
lis1[2] = lis[j]
else :
continue
for h in range(0,len(lis)):
if lis[h] != lis1[0] and lis[h] != lis1[1] and lis[h] != lis1[2]:
lis1[3] = lis[h]
else :
continue
for v in range(0,len(lis)):
if lis[v] != lis1[0] and lis[v] != lis1[1] and lis[v] != lis1[2] and lis[v] != lis1[3] :
lis1[4] = lis[v]
else :
continue
for x in range(0,len(lis)):
if lis[x] != lis1[0] and lis[x] != lis1[1] and lis[x] != lis1[2] and lis[x] != lis1[3] and lis[x] != lis1[4] :
lis1[5] = lis[x]
else :
continue
# 判断得到的解如果符合要求,则放入lis2,后面输出
if ((lis1[0]*100+lis1[1]*10+lis1[2])-(lis1[3]*100+lis1[4]*10+lis1[5])) == D:
number += 1
lis2.append(lis1[0]*100+lis1[1]*10+lis1[2])
lis2.append(lis1[3]*100+lis1[4]*10+lis1[5])
print(number)
for p in range(0,len(lis2),2):
print('{}-{}'.format(lis2[p],lis2[p+1]))
提交结果