原题链接:C语言训练-尼科彻斯定理
问题1:m 个连续奇数之和的形式输出
这题还是比较明显的,可以看到从第一个奇数开始,后面的奇数就只是简单的每次加个2而已。加几个2就是m的事了。可以说已经解决了一个问题。那么现在关键问题就是如何找到这个‘初始值’。
问题2:初始值的寻找
有关这个初始值的寻找,start = n * n - n + 1:这是起始奇数,它是m个连续奇数序列中的第一个奇数。
#include <stdio.h> int main() { int n; scanf("%d", &n); // 从标准输入中读取一个整数n long long cube = (long long)n * n * n; // 计算n的立方,使用long long来存储以防止溢出 printf("%d*%d*%d=%lld=", n, n, n, cube); // 打印n的立方的表达式 int start = n * n - n + 1; // 计算起始奇数,用于分解n的立方 int ret = 0; // 用于计算奇数序列的和 for (int i = start; i <= cube; i += 2) { // 从起始奇数开始遍历到n的立方 ret += i; // 累加当前奇数到和中 if (ret != cube) { // 如果和不等于n的立方 printf("%d+", i); // 打印当前奇数并加上一个加号 } else { // 如果和等于n的立方 printf("%d", i); // 打印当前奇数但不加加号 break; // 跳出循环 } } return 0; // 返回0表示程序成功执行 }
0.0分
5 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复