题目描述:
一个整数可以由连续的自然数之和来表示,给定一个整数,计算该整数有几种连续自然数之和的表达式,并打印出每一种表达式。
输入描述:
一个目标整数t 1<= t <=1000
输出描述:
该整数的所有表达式和表达式的个数,如果有多种表达式,自然数个数最少的表达式优先输出
每个表达式中按自然数递增输出
在每个测试数据结束时,输出一行"Result:X",其中X是最终的表达式个数
示例:
输入:9
输出:
9=9
9=4+5
9=2+3+4
Result:3
输入:10
输出:
10=10
10=1+2+3+4
Result:2
Python解法
N = int(input())
res = [[N]]
for i in list(range(N // 2 + 1))[::-1]:
i += 1
if sum(range(i+1)) < N:
break
else:
sum_ = 0
tmp = []
for j in list(range(i))[::-1]:
j += 1
sum_ += j
tmp.append(j)
if sum_ == N:
res.append(tmp)
break
elif sum_ > N:
break
for each in res:
print(str(N) + '=' + '+'.join(map(str, each)))
print('Result:'+str(len(res)))