解题思路:

..........这个题出的有问题,如果不知道这个定理的证明很难做


本题是一个定理,我们先来证明它是成立的。 
对于任一正整数a,不论a是奇数还是偶数,整数(a×a-a+1)必然为奇数。 
构造一个等差数列,数列的首项为(a×a-a+1),等差数列的差值为2(奇数数列),则前a项的和为: 
a×((a×a-a+1))+2×a(a-1)/2 
=a×a×a-a×a+a+a×a-a 
=a×a×a 
定理成立。证毕。 

通过定理的证明过程可知L所要求的奇数数列的首项为(a×a-a+1),长度为a。

编程的算法不需要特殊设计,可按照定理的证明过直接进行验证。



注意事项:





参考代码:

#include<stdio.h>

int main()

{

    int n,a,i;

    scanf("%d",&n);

    a=n*n-n+1;

    printf("%d*%d*%d=%d=%d",n,n,n,n*n*n,a);

    for(i=1;i<n;i++)

    {

        a=a+2;

        printf("+%d",a);

    }

}


点赞(10)
 

0.0分

26 人评分

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

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

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

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

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

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

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

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

评论列表 共有 13 条评论

ok 2年前 回复TA
#include"stdio.h"
int fun(int n)
{
	int x,sum=0,i,j;
	x=n*n*n;
	for(i=1;i<x/2;i+=2)
	{
		sum=0;
		for(j=i;j<x/2;j+=2)
		{
			sum+=j;
			if(sum>x)
				break;
			if(sum==x)
			{
				break;
			}
		}
		if(sum==x)
		{
			return i;
			break;
		}
	}
}
main()
{
	int x,sum=0,i;
	scanf("%d",&x);
	printf("%d*%d*%d=%d=",x,x,x,x*x*x);
	for(i=fun(x);1;i+=2)
	{
		sum+=i;
		printf("%d",i);
		if(sum!=(x*x*x)) 
			printf("+");
		else
			break;
	}
}
问题:输出超额
帮忙看一下问题所在
可可萝世界第一可爱 2年前 回复TA
大佬牛逼!!!
王乐 2年前 回复TA
多谢了,我看那个优质解能么复杂,还用了EOF,一看这个解瞬间豁然开朗啊!
SK 4年前 回复TA
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int  a;
	cin >> a;
	cout << a << "*" << a << "*" << a << "=" << pow(a, 3) << "=";
	for (int i = a*a-a+1; i < a * a + a; i += 2)
	{
		cout << i;
		if (i != a * a + a - 1) cout << "+";

	}
}
哥我方法差不多,为什么会错误87
张油条 5年前 回复TA
数学不好 定理不会 做个屁啊
5年前 回复TA
@乐 这个运行的答案也对啊,怎么就是提示输出超限%50啊??????
5年前 回复TA
#include<stdio.h>

int main()
{
int i,j,sum=0,n;
scanf("%d",&n);
for(i=1;i<n*n*n;i+=2)
{
sum=0;
for(j=i+2;j<=n*n*n;j+=2)
{
	sum=sum+j;
	if(sum==n*n*n)
	{
		printf("%d*%d*%d=%d=",n,n,n,sum);
		for(i=i+2;i<=j;i+=2)
		{
			printf("%d",i);
			if(i!=j)
			printf("+");
		}
	}
	if(sum==n*n*n)
		break;
}
if(sum==n*n*n)
		break;
}
return 0;
}
123456 6年前 回复TA
居然可以这么简单,数学不好真的是硬伤啊
wanda 7年前 回复TA
定理不告诉醉了
阴阳相易 7年前 回复TA
说真的,要不是看到你的题解,打死我都没有想到,是题目有问题......
题目根本没有说清楚“尼科彻斯定理”的具体内容,百度后才知道,所谓的一连串奇数,实际上指的是 整数本身所代表的个数......


任何一个整数m的立方都可以写成m个连续奇数之和。