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

目录

前言:

题目描述:

解题思路:

具体代码:


前言:

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

数列可以分为有限数列和无限数列。有限数列是指数列中的项数是有限的,例如 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;
}
相关推荐
Zephyr_018 小时前
c++数据结构
数据结构·c++
故事和你9118 小时前
蓝桥杯-2026年C++B组省赛
开发语言·数据结构·c++·算法·蓝桥杯·动态规划·图论
星恒随风18 小时前
C语言算法复杂度详解:时间复杂度与空间复杂度一篇讲透
c语言·算法
傻瓜搬砖人18 小时前
c语言绿皮书第三版第十一章习题
c语言·开发语言·算法·谭浩强·绿皮书第三版
如君愿18 小时前
考研复习 Day 33 | 习题--计算机网络 第六章(应用层 上)、数据结构 查找算法(上)
数据结构·计算机网络·考研·课后习题
计算机安禾18 小时前
【c++面向对象编程】第3篇:类与对象(二):构造函数与析构函数
开发语言·c++·算法
小年糕是糕手18 小时前
【C++】vector 不踩坑指南:用法、底层实现与迭代器失效解析
c++·算法
SilentSamsara19 小时前
生成器完全指南:`yield` 与惰性求值的工程价值
linux·开发语言·python·算法·机器学习·青少年编程
玛卡巴卡ldf19 小时前
【LeetCode 手撕算法】(二分查找)搜索插入位置、搜索二维矩阵、查找数组相同的所有位置、搜索旋转排序数组、旋转升序数组的最小值
数据结构·算法·leetcode
谷雨不太卷1 天前
进程的状态码
java·前端·算法