解题思路:
1.输入一个数n,求满足不等式:1^3+2^3+...+i^3<=n   的最大i;

2.设置求和循环,从i=1开始,每次 i 递增1,且把pow(i,3)累加到s,直至s>=n,结束;

3.直至s>=n,结束,也就是s<n则执行;

4.结束时,s可能大于n,s也可能等于n;

5.当s大于n时,对应的 i 减去1才是满足不等式1^3+2^3+...+i^3<=n 的最大  i;

6.当s等于n时,对应的 i 就是 满足不等式1^3+2^3+...+i^3<=n 的最大  i;


参考代码:

#include <stdio.h>
#include <math.h>
int main()
{
    int i = 0, s = 0, n;
    scanf( "%d", &n );
    while ( s < n )
        s += pow( ++i, 3 );
    if ( s != n )
        printf( "%d", i - 1 );
    else
        printf( "%d", i );
    return(0);
}

别忘点赞哦-.-

点赞(21)
 

0.0分

16 人评分

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

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

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

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

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

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

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

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

评论列表 共有 6 条评论

追梦人 2年前 回复TA
#include<stdio.h>
int main(void)
{
	int n;
	scanf("%d",&n);
	int s=0,i=1,a=0;
	while(s<=n)
	{
		s+=i*i*i;
		i++;
		a++;
	}
	printf("%d",a-1);
	return 0;
}
ww 2年前 回复TA
@Talog m没给初值
XDJKYang 2年前 回复TA
@Talog 第一句分开写
浅梦 3年前 回复TA
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
  int i,s,n;
  scanf("%d",&n);
  for(i=1,s=0;s<n;i++)
  {
  	s+=i*i*i;
  }
  if(s==n)
  {
  	printf("%d",i-1);
  }
  else
  printf("%d",i-2);
}
派大星 5年前 回复TA
它题目好像没说要最大的啊!
我每次都输出1,逻辑上也可以啊!
Talog 5年前 回复TA
为什么我这个代码这个oj运行超时??
#include <stdio.h>

int main()
{	int n,m,sum=0;
	scanf("%d",&n);

while(sum<=n){
	m++;
	sum=m*m*m+sum;
}
printf("%d",m-1);
	return 0;
}