描述
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。
数据范围:1≤𝑚≤100 1≤m≤100
进阶:时间复杂度:𝑂(𝑚) O(m) ,空间复杂度:𝑂(1) O(1)
输入描述:
输入一个int整数
输出描述:
输出分解后的string
示例1
输入:
6
输出:
31+33+35+37+39+41
本题通过模拟可以发现规律,n=1时,返回一个1²,当n为大于1的奇数时,返回一个以n²为对称的连续奇数数列,当n为大于1的偶数时,返回以n²两边的数对称的连续奇数数列,由此写出以下代码。
n=int(input())
nf=n*n
numlst=[]
if n%2==0:
left=nf-1
right=nf+1
numlst.append(left)
numlst.append(right)
while len(numlst)<n:
left-=2
right+=2
numlst.append(left)
numlst.append(right)
else:
if n==1:
numlst.append(1)
else:
left=nf-2
right=nf+2
numlst.append(nf)
numlst.append(left)
numlst.append(right)
while len(numlst)<n:
left-=2
right+=2
numlst.append(left)
numlst.append(right)
numlst.sort()
for i in range(len(numlst)):
if i!=len(numlst)-1:
print(numlst[i],end='+')
else:
print(numlst[i])
3万+

被折叠的 条评论
为什么被折叠?



