解题思路:
1、刚开始看这个题的确有点被吓到,仔细一看不就是等差数列吗,小意思。任何一个整数m的立方都可以写成m个连续奇数之和用通项公式来表示:
m*m*m=sum(m^3)=a1+a2+...+an(其中公差等于2) 这样一看不就是很简单了吗?先求出m的3次方sum,然后sum就是就是等差数列的前n项和(其中的n就是咱们之前输入的那个数,看题目解释就知道了)
2、接下来咱们讲讲等差数列的前n项和,我才发现百度百科上的求和公式是错误的,所以就贴了图片让大家清楚的看下
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 人评分