问题1:m 个连续奇数之和的形式输出


这题还是比较明显的,可以看到从第一个奇数开始,后面的奇数就只是简单的每次加个2而已。加几个2就是m的事了。可以说已经解决了一个问题。那么现在关键问题就是如何找到这个‘初始值’。


问题2:初始值的寻找

1beb714053c6484796d08076f3547546.png

有关这个初始值的寻找,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.0分

5 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论