zoukankan      html  css  js  c++  java
  • 比赛建金字塔问题解题报告

    建金字塔问题

    题目大意:

    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.

    样例输入:

    Input

    1

    Output

    1

    Input

    25

    Output

    4

    提示:

    Illustration to the second sample:

    题目分析:
    题目主要运用累加法。  每层及以上层的所有立方体都相加。要注意比较每层建完后所剩的立方体数与下一层所需的立方体数,如果不够建下一层则金字塔的建立结束。
    使用for循环完成累加操作,输出的是层数(i-1)而不是i。
    程序代码:
     1 #include<cstdio>
     2 #include<iostream>
     3 using namespace std;
     4 
     5 int n[10000];
     6 
     7 int main()
     8 {
     9     int n,i=0,m=0,a=0,b;
    10     scanf("%d",&n);        //输入立方体总数
    11     for(i;a<=n;i++)        //for 循环求出层数,比较剩余立方体数与下一层所需立方体数
    12     {
    13         m+=i;
    14         a+=m;    
    15         b=i-1;
    16     }
    17     cout<<b<<endl;         //输出层数
    18     return 0;
    19 }

    心得:
    这也是一道比较简单的题目,主要用到累加法 。要注意输出的是以建的层数,但做完for 循环后i++,比以建的多一层,所以输出的是i-1,做题时这点需要注意。做题时还是要仔细思考,想清题目所要输出的结果。

     

     

  • 相关阅读:
    Spring+SpringMVC+MyBatis+easyUI整合
    @RequestMapping 用法详解之地址映射(转)
    Servlet的5种方式实现表单提交
    activiti 快速入门--组任务(candidate users)分配(6)
    activiti数据库表结构剖析
    Java程序如何生成Jar、exe及安装文件
    StringEscapeUtils对字符串进行各种转义与反转义
    30分钟学会如何使用Shiro
    Java基础恶补——内存泄露、内存溢出
    ashx文件结合ajax使用(返回json数据)
  • 原文地址:https://www.cnblogs.com/ttmj865/p/4653938.html
Copyright © 2011-2022 走看看