输入正整数T,输出T可以由连续自然数的和表示的所有情况及其数量。
如输入:9
输出:
9=9
9=4+5
9=2+3+4
Result=3
解释:9可以由3种形式的连续自然数的和表示,Result为3。
import copy
def func(lists):
if sum(lists) == T:
return True,0
elif sum(lists) < T:
return False,0
else:
return False,1
def fun(n):
sum_list=[]
if n%2 == 0:
module_num=n//2
else:
module_num=n//2+1
num_list=[]
for i in range(1,module_num+1):
num_list.append(i)
sta,sta_id=func(num_list)
if sta:
sum_list.append(copy.deepcopy(num_list))
if not sta and sta_id==0:
continue
else:
for j in range(len(num_list)):
num_list.pop(0)
sta, sta_id = func(num_list)
if sta:
sum_list.append(copy.deepcopy(num_list))
if not sta and sta_id == 0:
break
sum_list.append([T])
for n_list in sum_list[::-1]:
print("{}={}".format(T,"+".join(list(map(str,n_list)))))
print("Result={}".format(len(sum_list)))
if __name__ == '__main__':
T=int(input("input a num:"))
fun(T)