搭建金字塔

题目大意:

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

思路分析:       整体方向是所拥有的木块数N与能建层数需要的木块数sum的比较,即每建一层,目前所用的sum总数跟N比较,如果N>sum那么久继续建直到N<=sum停止计算。    用两层循环计算总数。内层循环用来计算当前最底层需要的木块数,外层循环sum加上内层循环得数就是当前所需木块总数,每建完一层就做比较。最后输出i时要做一些处理,具体见代码。

源代码:
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     while (cin >> n)                         //输入多组案例,以0结束
 7     {
 8         int sum = 0, m = 0;
 9         for (int i = 1;; i++)
10         {
11
12             sum += m;               //目前所需要的木块总数
13
14             if (n > sum)
15             {
16                 int k = 0;             //定义中间变量
17                 for (int j = 0; j <= i; j++)
18                 {
19
20                     k += j;         //计算当前层所需的木块数
21                     m = k;
22                 }
23             }
24             if (n - sum == 0)
25             {
26                 cout << i - 1 << endl;       //n==sum时输出i-1,因为开始
27                 break;                         //时第一层没有用木块也算进去了
28             }
29             if (n<sum)
30             {
31                 cout << i - 2 << endl;        //小于时除了减去开始多算的一
32                 break;                        //层,还要算借来木块多算的一层。
33             }
34         }
35     }
36     //system("pause");
37     return 0;

心得:
通过之前看过的阶乘计算的方法找到了思路,这个题目算简单题,要注意定义中间变量,这样好理解一些。判断的条件也要仔细考虑,输出时也要学会做处理。第二天的比赛状态比第一天差些,还是要好好调整!

				
时间: 2024-10-31 02:16:12

搭建金字塔的相关文章

《金字塔原理》(在读)

一.知识梳理 1.归类分组,将思想组织成金字塔 归类分组搭建金字塔 找出逻辑关系,抽象概括 2.金字塔中的思想以三种方式互相关联 向上 向下 横向 3.自上而下表达,结论先行 文章中任一层次上的思想必须是对其下一层次思想的总结概括 每组中的思想必须属于同一逻辑范畴 每组中的思想必须按照逻辑顺序组织(时间,结构,程度) 原文地址:https://www.cnblogs.com/ylxn/p/11816071.html

介绍7种分析问题的思维方法

--转载自简书,用于学习.分析.解决问题. 下面文章是方法. 对于学习编程语言,用5W2H方法的简化版来解决--学习时,要回答以下的问题,what --是什么?How--怎么做 牛牛要努力 2016.03.16 19:45* 字数 1690 阅读 27772评论 86喜欢 1162赞赏 2 很多麻烦,问题我们一时解决不了,现在我觉得是因为自己没有使用一些专业的,系统性的思维方法,等你熟练使用这些方法解决自己常遇到的问题,那时候心情棒棒哒.下面是我总结的几个我们常见的,能够很快上手的一些思维方法,

谈谈企业的数据工作!——企业的数据分析能力金字塔

写在前面 笔者写这篇文章的初衷源于两个故事: 故事一:一位在互联网行业做数据库架构多年的同事一起吃饭,问起我现在在说什么,我说自己在做医疗方面数据分析,同事笑,说:你有很多资源啊,只要你能拿到电子病例的数据,就能分析很多东西了--我脸上的微笑表情瞬间僵化! 故事二:当时为内蒙一个企业做上游原材料供应商的数据管理项目,当时我们拿到的只是该企业小部分供应商的数据,下一阶段计划拿到其全国供应商的相关数据给该企业进行管理支持.有一天,我们的项目负责人很兴奋,高兴地对我说:后面我们拿到所有供应商的数据后,

快速搭建简单的LBS程序——地图服务

很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识. 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为二维的平面图形,需要通过投影的方式将三维空间中的点映射到二维空间中.地图投影需要建立地球表面点与投影平面点的一一对应关系. 我们经常使用的一种投影算法是墨卡托投影,大概做法就是先拿一个圆柱体使它的轴与地球自转轴重合,先把球面上的点投影到圆柱的侧面上,再把圆柱展开就得到长方形的地图了. 关于墨卡托投影可以更多信息可以参看

软件开发的金字塔

 在软件开发中,可以用一个金字塔来形容从需求分析到编码这整个过程.从中来分析整个开发过程以及开发过程中是否规范的利与弊. 金字塔从下到上依次是由需求分析.概要设计.详细设计.编码组成,这里把需求分析又分成了需求和软件需求规格说明书,如图1所示: 图1 规范的软件开发金字塔 下面从下到上开始来分析规范的软件开发金字塔. 在软件开发中,无论你的软件或大或小,需求分析是最重要且必不可少的,也是整个软件开发的基础.图1中浅绿色部分即为需求分析,这里把需求分析分为需求和软件需求规格说明书.在实际的项目

ZTE中兴利益分配金字塔

一. 金字塔式的利益分配结构:高层之蜜糖,骨干之砒霜中兴的利益分配文化就是高层38位元老利用中兴新控制中兴通信的管理决策,通过关联投资公司和关联实体公司抽取整个公司发展的利润回报(详见下图). 关联投资公司通过“中兴新”影响控制中兴通讯的管理决策.关联投资公司投资关联实体公司转移中兴通讯利润. 关联投资公司如何通过“中兴新”影响控制中兴通讯的管理决策?[中兴年报显示]中兴通讯第一大股东是中兴新,中兴新的背后股东为西安微电子所(34%股份)+航天广宇(17%)+中兴维先通(49%股份),而实际控制

Opengl ES 1.x NDK实例开发之八:旋转的纹理金字塔

开发框架介绍请参见:Opengl ES NDK实例开发之一:搭建开发框架 本章在第六章(Opengl ES 1.x NDK实例开发之六:纹理贴图)的基础上绘制一个旋转的纹理金字塔,原理和纹理贴图一样,需要注意的是定好金字塔的顶点数组和纹理数组. [实例讲解] [实例源码] [GLJNIActivity.java] /* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache Licens

[原创]浅谈互联网金融接口测试平台搭建

[原创]浅谈互联网金融接口测试平台搭建 接口测试我想各位做测试都不陌生,尤其是在现在分层测试思想倡导下,接口测试可以说是互联网行业必备的测试技能之一,我以前的博文也有讲过类似的内容,要想了解可以移驾到以下内容查看: 接口测试技术介绍 PostMan接口测试神器利剑 浅谈自动化测试中的金字塔模型理解 以上三篇内容会讲解为什么要重视接口测试?好的工具推荐,当然还有接口测试基本内容,如感兴趣可以查阅!好了谈正事,讲讲接口测试平台搭建要注意什么! 很多人会有疑问为什么要去搞个接口测试平台,不是有所谓的现

关于《金字塔原理》的主要内容

为大家分享一篇网易教育产品部韩坤芳关于金字塔原理的文章.希望一起交流探讨,共同进步提升. 工作的时候,特别是技术同学,我们通常会有一种感觉,"表达" 比 "做" 难.有时候明明做得挺好的一件事情,表达出来却不是那么回事情,特别是当转正.晋升述职的时候,都不知道怎么来组织自己的思路.平时在和同事.Partner 沟通的时候,需要沟通好一会才能把事情说清楚.如何整理自己的思维逻辑,表达自己想表达的内容:如何能让对方看懂.听明白.记住我们想表达的:如何让对方顺着我们的思路