ACM第二次比赛( C )
2015-07-17 18:57
274 查看
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Description
Vanya got n cubes. He decided to build a pyramid from them. Vanya wants to build the pyramid as follows: the top level of the pyramid must consist of 1 cube, the second level must consist of 1 + 2 = 3 cubes, the third level must have 1 + 2 + 3 = 6 cubes, and so on. Thus, the i-th level of the pyramid must have 1 + 2 + ... + (i - 1) + i cubes.
Vanya wants to know what is the maximum height of the pyramid that he can make using the given cubes.
Input
The first line contains integer n (1 ≤ n ≤ 104) — the number of cubes given to Vanya.
Output
Print the maximum possible height of the pyramid in the single line.
Sample Input
Input
Output
Input
Output
程序分析:此题的考点还是在于累加。第一次是1,第二次就是1+2,第三次就是1+(1+2)+3如此循环,所以这也要求了我们应该把每一次答案放在一个数里,对于这个题目我们用数组更能够解决问题,在用一个for循环把要加的数加进来。但是应该注意的是最后我们sum-n>0的时候,我们是加到超过了n的,所以j应该减1.但是如果sum==0,则j的值就是我们要得到的值。
程序代码:
Description
Vanya got n cubes. He decided to build a pyramid from them. Vanya wants to build the pyramid as follows: the top level of the pyramid must consist of 1 cube, the second level must consist of 1 + 2 = 3 cubes, the third level must have 1 + 2 + 3 = 6 cubes, and so on. Thus, the i-th level of the pyramid must have 1 + 2 + ... + (i - 1) + i cubes.
Vanya wants to know what is the maximum height of the pyramid that he can make using the given cubes.
Input
The first line contains integer n (1 ≤ n ≤ 104) — the number of cubes given to Vanya.
Output
Print the maximum possible height of the pyramid in the single line.
Sample Input
Input
1
Output
1
Input
25
Output
4
程序分析:此题的考点还是在于累加。第一次是1,第二次就是1+2,第三次就是1+(1+2)+3如此循环,所以这也要求了我们应该把每一次答案放在一个数里,对于这个题目我们用数组更能够解决问题,在用一个for循环把要加的数加进来。但是应该注意的是最后我们sum-n>0的时候,我们是加到超过了n的,所以j应该减1.但是如果sum==0,则j的值就是我们要得到的值。
程序代码:
#include<cstdio> #include<iostream> using namespace std; int main( ) {int a[200]={0}; int i,n,j,sum=0; a[1]=1; for(i=2;i<200;i++) { for(j=0;j<=i;j++) a[i]+=j; } scanf("%d",&n); for(j=1;j<=i;j++) { sum+=a[j]; if(sum>n) { printf("%d\n",j-1); break; } else if(sum==n) {printf("%d\n",j); break; } } return 0; }
相关文章推荐
- 取模运算
- ASP.NET - Web.config文件详解
- [置顶] WebSocket+Netty实现聊天室
- Soldier and Bananas( CodeForces - 546A)
- Cocos-js 之 使用Chipmunk实现碰撞 和 碰撞的监听
- 201507171852_《JavaScript中把arguments转换为数组对象代码》
- ASP.NET - 出错页
- 归并排序
- [转]使用Doxygen生成全中文的chm帮助文档
- UVALive 2426 Multiple Morse Matches(kmp+dp)
- java解析csv的方式
- linux切换JDK版本
- NOI2015 Day1 T1 程序自动分析
- Plus One 数组加1,vector处理
- 【学习笔记】【OC语言】NSString
- 简单的生产者-消费者
- 2015-7-17
- Oracle分析函数
- 滚动 公告
- ACM求C(m, n) = m!/((m - n)!n!) 的二进制数的末尾零的数量