StarHui


私信TA

用户名:uq_15565483691

访问量:3959

签 名:

只要你想,世界就会出现奇迹!

等  级
排  名 326
经  验 5424
参赛次数 2
文章发表 25
年  龄 18
在职情况 学生
学  校 西安汽车职业大学
专  业 人工智能

  自我简介:

大一新生一枚 一起学习交流,请加V:StarHui0415 个人公众号:阿辉的大本营 公众号会每天更新一道算法题!!!

TA的其他文章

解题思路:

                1、刚开始看这个题的确有点被吓到,仔细一看不就是等差数列吗,小意思。任何一个整数m的立方都可以写成m个连续奇数之和用通项公式来表示:

                        m*m*m=sum(m^3)=a1+a2+...+an(其中公差等于2) 这样一看不就是很简单了吗?先求出m的3次方sum,然后sum就是就是等差数列的前n项和(其中的n就是咱们之前输入的那个数,看题目解释就知道了)

                2、接下来咱们讲讲等差数列的前n项和,我才发现百度百科上的求和公式是错误的,所以就贴了图片让大家清楚的看下微信图片_20221027162620.jpg

    sum=a1 * n + d/2 * (n^2-n)其中(d=2,n=num),就可以写成sum = a1 * n +n^2 + n;这样n是已知的,就可以求出a1,a1 = (sum - n * n + n) / n (其中n等于num),所以an = a1 + (n - 1) * d(d = 2,n = num),这样for循环就可以打印了



注意事项:

                貌似没有什么需要注意的啊,就是利用好求和公式,认真写出a1和an的通项公式。

参考代码:

#include <stdio.h>
#include <math.h>//调用这个库函数是为了pow函数
int main()
{
    int num,sum;
    scanf("%d",&num);
    sum = pow(num,3);
    printf("%d*%d*%d=%d=",num,num,num,sum);
    int a1 = (sum - num * num + num) / num;
    int an = a1 + (num - 1) * 2;
    int i;
    for(i = a1;i <= an;i+=2)//这里写成i+=2是为了写出等差为2的数列
    {
        if(i != an)//写个判断条件是为了别把最后一个数后面也打印一个加号(+)
            printf("%d+",i);
        else
            printf("%d",i);
    }
    return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »