当前位置: 首页 > news >正文

趣味算法------煤球数目

目录

前言:

题目描述:

解题思路:

具体代码:


前言:

        数列在数学中是一个非常基础且重要的概念,它指的是按照一定顺序排列的一系列数。数列中的每一个数被称为该数列的项。

数列可以分为有限数列和无限数列。有限数列是指数列中的项数是有限的,例如 1,2,3,4,51,2,3,4,5

;而无限数列的项数是无限的,如 1,12,13,14,…1,21​,31​,41​,…

数列的项可以遵循一定的规律,例如等差数列(每一项与它前一项的差是一个常数)或等比数列(每一项与它前一项的比是一个常数)。数列的性质和行为是数学分析、微积分以及数论等数学分支中的研究主题。

数列在现实世界中也有广泛的应用,比如在物理学中描述运动规律,在经济学中分析时间序列数据,在计算机科学中作为算法设计的基础等。

题目描述:


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

输入格式
一个整数n,表示有多少层 (0<n<10000)。

输出格式
一个整数,表示第 N 层有多少煤球。

输入输出样例
输入

30
42

输出

4960
13244

解题思路:

        这种类型的题明显是属于数列求和问题,为了方便大家理解,我们从等差数列入手,

已知数列【1,3,6,10】,发现相邻两项做差得出差值【2,3,4】成等差数列所以

a2 = 3 = 1+2, a3 = 6 = 1+2+3,a4 = 10 = 1+2+3+4。

        得出通项为ai =  i*(i+1)/2。然后对每一项求和即可。

具体代码:

#include <stdio.h>int main(){int n;scanf("%d", &n);//确定层数。int total = 0;for(int i=1; i<=n; i++){total += i*(i+1)/2;//对每一项求和}printf("%d\n", total);return 0;
}


http://www.mrgr.cn/news/9096.html

相关文章:

  • 关闭Chrome快捷键
  • 回归分析系列11—时间序列数据中的回归
  • 海思SD3403/SS928V100开发(16)Tsensor驱动开发
  • 两种Python进行cpu并行运算的方式
  • 笔试题(9)
  • C++深入剖析智能指针
  • 【PyTorch】关于Transforms的简单使用
  • 解决MySQL的PacketTooBigException异常问题
  • 服务端事件(Server-Sent Events):实现实时Web通信的利器
  • 探索Qotom Q51251OPS迷你电脑:功能与广泛应用
  • Angular中的依赖注入是如何工作的?它的优势是什么?
  • C语言:深入理解文件操作
  • Redis的持久化介绍及其Linux配置介绍
  • List<对象>转JSON字符串以及JSON字符串转List<对象>
  • 大模型重塑就医体验:医联MedGPT助力健康中国建设
  • k8s搭建
  • vagrant 创建虚拟机
  • k8s中service对象
  • HTTP协议
  • 【Linux】如何快速查看 linux 服务器有几个cpu