解题思路:
看测试案列找规律:
13*13*13=2197=157+159+161+163+165+167+169+171+173+175+177+179+181
找到以下规律:
1.后面要求和的奇数共有m个,如测试案列中要求和的奇数有13个
2.再这些要求和的奇数中,中间的那个是m的平方,可以看到上面的案列第7个167,是13的平方
验证以上的规律:
再以4为列:4*4*4=64=13+15+17+19
当m是偶数的话,中间那位数就是m的平方-1
我们只需要通过以上的规律找到第一个奇数,然后每次让他自增2,执行m次,就解出来了
注意事项:
可以看到如果测试案列是偶数的话,中间那位数就是m的平方-1,所以要分情况处理
参考代码:
n=int(input())
print("%d*%d*%d=%d="%(n,n,n,n*n*n),end="")
#start代表第一个奇数
start=0
if n%2==0:
start=int((n*n-1)-(n/2-1)*2);
#解释一下为什么是n-1。其实是执行n次,可以看下最后一行,这是一个编程技巧:因为最后一次打印不需要打印加号
for i in range(0,n-1):
print(start,end="+")
start+=2
else:
start=(n*n)-n+1
for i in range(0,n-1):
print(start,end="+")
start+=2
print(start)
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复