算法题每日一练---第23天:煤球数目

简介: 有一堆煤球,堆成三角棱锥形。

一、问题描述


有一堆煤球,堆成三角棱锥形。具体: 第一层放 1 个, 第二层 3 个(排列成三角形), 第三层 6 个(排列成三角形), 第四层 10 个(排列成三角形), .... 如果一共有 100000000 层,共有多少个煤球?


二、题目要求


考察

数学思想,规律
建议用时:10~20min


运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M


三、问题分析


本题主要考察两个重要的知识点:

第一个是每一层煤球的数量关系,能否找到每一层煤球的规律,否则暴力法不好做。

第二个是选取合理的常见存储类型存储定义,防止超出存储类型的范围,无法输出具体结果。


规律

第一层     1+0=1
第二层     1+2=3
第三层     3+3=6
第四层     4+6=10
.....
第n层     n+前一层煤球数目

看了上面的一些数据之后,相关的规律是不是很快的出结果了。

具体的规律为:当前一层的煤球数目等于前一层的煤球数目加上当前的层数序号。


常见存储类型

类型 存储空间大小 最小值 最大值
char 1个字节 -128  127
float 4个字节 3.4e-38 3.4e+38
int 4个字节 -2 147 483 648 2 147 483 647
long 4个字节 -2 147 483 648 2 147 483 647
double 8个字节  1.7e-308 1.7e+308
long long 8个字节 -9 223 372 036 854 775 808 9 223 372 036 854 775 807

double和float存储范围很大,但毕竟是浮点型,题目的结果使用long long 整形存储也完全可以。


四、编码实现


#include<iostream>usingnamespacestd;
longlonginta=1,b,sum=1;//lng long 初始化定义煤球数目sum等于1,算作第一层intmain()
{
inti,n;//初始化定义cin>>n;//输入nfor(i=2;i<=n;i++)//从第二层开始循环相加    {
b=a+i;//后一个数字等于前面一个数字加上一个当前下标sum+=b;//相加等于煤球数总和a=b;//交替出现    }
cout<<sum;//输出结果return0;
}


五、输出结果


输出具体结果为:338960700901149440


相关文章
|
6月前
|
算法 C++
【动态规划】【子序列除重】【C++算法】1987不同的好子序列数目
【动态规划】【子序列除重】【C++算法】1987不同的好子序列数目
|
6月前
|
算法 测试技术 C++
【动态规划】【C++算法】2518. 好分区的数目
【动态规划】【C++算法】2518. 好分区的数目
|
6月前
|
人工智能 移动开发 算法
【动态规划】【C++算法】LeetCoce996正方形数组的数目
【动态规划】【C++算法】LeetCoce996正方形数组的数目
|
6月前
|
算法 测试技术 C#
【滑动窗口】C++算法:可见点的最大数目
【滑动窗口】C++算法:可见点的最大数目
|
6月前
|
算法 测试技术 C#
【贪心算法】LeetCode2071:你可以安排的最多任务数目
【贪心算法】LeetCode2071:你可以安排的最多任务数目
|
6月前
|
算法 测试技术 C#
C++二分算法:最多可以参加的会议数目 II
C++二分算法:最多可以参加的会议数目 II
|
11月前
|
算法 测试技术 C#
C++二分查找算法的应用:长度递增组的最大数目
C++二分查找算法的应用:长度递增组的最大数目
|
1月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
69 0
|
6月前
|
设计模式 算法 Java
【数据结构和算法】 K 和数对的最大数目
给你一个整数数组nums和一个整数k。 每一步操作中,你需要从数组中选出和为k的两个整数,并将它们移出数组。 返回你可以对数组执行的最大操作数。
70 2
|
6月前
|
设计模式 算法 Java
【数据结构和算法】定长子串中元音的最大数目
这是力扣的 1456 题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。又是一道滑动窗口的典型例题,可以帮助我们巩固滑动窗口算法。给你字符串s和整数k。 请返回字符串s中长度为k的单个子字符串中可能包含的最大元音字母数。 英文中的元音字母为(a,e,i,o,u)。
80 1