• 专栏
  • 《蓝桥杯题目》

目录

【问题描述】

【输入格式】

【输出格式】

【样例输入】

【样例输出】

【评测用例规模与约定】

省流版本:

题目解析:

综上所述,写成代码如下所示:


【问题描述】

下面的图形是著名的杨辉三角形:

如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列:

1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, …

给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?

【输入格式】

输入一个整数 N

【输出格式】

输出一个整数代表答案。

【样例输入】

6

【样例输出】

13

【评测用例规模与约定】

对于 20% 的评测用例,1 ≤ N ≤ 10;

对于所有评测用例,1 ≤ N ≤ 1000000000。

省流版本:

如果直接用暴力枚举的话,需要求出每一行的全部数字,然后判断每一行中是否存在该整数,思路可以,但是时间复杂度太大,只能拿30%。如果根据二项式定理,找出从哪一行开始只需要遍历前三个数,然后利用求和公式直接计算答案,就可以大大减少时间复杂度。

题目解析:

首先介绍一下杨辉三角的性质:

1、每个数等于它上方两个数的和。

2、左右对称(说明最先出现的数一定在左边)

3、第n行有n个数,前n行就有(n+1)*n/2个数

4、n+1行的数是(a+b)^n展开后各项的系数

所以,由性质4可得,第n行的m个元素为C(n-1,m-1),由于1 ≤ N ≤ 1000000000,每一行第四个数为N*(N-1)*(N-2)/6,粗略计算,当N>1900时,第四项就大于1000000000了,所以说,从第1901行开始,N若是第一次出现,只可能出现在第二第三项。

因此,在前1900层时,可以直接使用暴力枚举,在判断是否在该层,若不在前面1900层,先粗略估计N所在的层数(先计算在第三项时,因为若存在,就会先出现)int((N*2)**0.5),这时,就只需要判断三种情况:①N在该层;②N在下一层;③N在N+1层。

最后计算在第几个数上,分为三种情况:

1、在前1900层时,(c*c+c)//2+j+1 ,在c+1层的第j+1个数时(j是在列表中的下表,因此要加1)

2、在1900层之后且是第三项时,(k*(k+1))//2+3,第k+1行

3、在1900层之后且是第二项时,(N*(N+1)//2)+2,第N+1行时

综上所述,写成代码如下所示:

N=int(input())
n=[1]   #第一层
c=1     #层数
if N==1:print(1)
else:#由于第1900层开始,N只会出现在第二个或第三数字上,所以1900开始,不需要求全部while c<1900:n = [1]+[n[j]+n[j+1] for j in range(len(n)-1)]+[1]    #杨辉三角递推公式if N not in n[1:len(n)-1]:   #判断N是否在c层上c=c+1else:break         if c==1900:k=int((N*2)**0.5)  #粗略计算出现的层数 #N出现在第三个数上while (k*(k-1))//2<N:k=k+1if (k*(k-1))//2==N:print((k*(k+1))//2+3)#N出现在第二个数上else:print((N*(N+1)//2)+2)    # N会出现在第N+1层       #N在前1900层上时        for j in range(len(n)):if n[j]==N:print(((c*c+c)//2)+j+1)   break

最后运行一下结果。。。。。

蓝桥杯真题 杨辉三角形 python相关推荐

  1. 扩散(蓝桥杯真题)——python解答

    题目如下: 小蓝在一张 无限大 的特殊画布上作画. 这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示. 小蓝在画布上首先点了一下几个点: (0, 0) (2020, 11) (11, ...

  2. 三升序列(蓝桥杯真题)——python

    题目如下: 对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向右看.或者从上向下看是递增的. 例如,如下矩阵中 ...

  3. 【思特奇杯•云上蓝桥--算法训练营】第1周作业 蓝桥杯真题(Python)

    第1周作业 第一题 跑步训练 问题描述 答案提交 代码 结果 解析 第二题 阶乘约数 问题描述 答案提交 代码 结果 解析 第三题 出栈次序 问题描述 答案提交 代码 结果 第四题 哥德巴赫分解 问题 ...

  4. 【蓝桥杯真题】 Python题解

  5. python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在19351936年应邀来中国清华大学讲学。。。

    python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学.他曾在1935~1936年应邀来中国清华大学讲学... 问题描述 全排列模板: 美国数学家维纳(N. ...

  6. 【蓝桥杯真题】16天冲刺 Python

    距离比赛很快了,希望和我一起准备的PY党能更加熟练的掌握Python! 1.距离和(模拟赛填空题) 问题描述: 两个字母之间的距离定义为它们在字母表中位置的距离.例如 A和 C 的距离为 2,L 和  ...

  7. 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和

    注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...

  8. python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节

    python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节 题目 问题描述 在计算机存储中,12.5MB是多少字节? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整 ...

  9. python解答蓝桥杯真题1 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。。。

    python解答蓝桥杯真题1 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记... 题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月 ...

  10. python蓝桥杯真题 跑步锻炼

    python蓝桥杯真题 跑步锻炼 题目描述 小蓝每天都锻炼身体. 正常情况下,小蓝每天跑1千米.如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米.如果同时是周一或月初,小蓝也是跑2千米. ...

最新文章

  1. JavaScript之Promise实现
  2. COCOS学习笔记--Cocos引擎渲染流程
  3. ubuntu install redis/mongo
  4. openpyxl 插入列_[Python]Excel编程(openpyxl)学习笔记
  5. Android开发笔记(三十六)展示类控件
  6. KVM下桥接的设置(Ubuntu)
  7. Windows字体拯救计划(雅黑+monaco+mactype)
  8. Mac 锁屏防止断网、睡眠、注销登录
  9. DNS各地延迟排行榜
  10. 申请gmail邮箱及foxmail邮箱
  11. 美创科技出席世界信息安全大会:多维数据安全框架体系,护航新基建发展
  12. WIN10下 搭建golang+vscode开发环境(图文并茂,傻瓜式教程)
  13. ffmpeg的安装以及transform360插件的安装
  14. 预告|2022 星策 Summit 企业数智化转型论坛议程公布!
  15. Java语言制作动画
  16. Linux系统中systemctl命令的使用
  17. 硬盘的文件格式变为RAW格式
  18. 项目启动会发言稿(范文五)
  19. jabref java_一个开源的参考文献管理软件:JabRef
  20. apple watch和小米手表的操作逻辑对比:

热门文章

  1. tcp服务器测试网页版,tcp测试服务器
  2. Qt 车牌识别 (EasyPR)
  3. js实现敏感词过滤算法
  4. 高清 GJB-5000B,2021最新版发布,软件能力成熟度模型
  5. python aiml_Python:用aiml构建英语聊天机器人
  6. NXP恩智浦智能车四轮组-- 2.电磁检波电路、运放模块原理图
  7. linux设备驱动的实现与理解
  8. c语言屏蔽一段程序,C语言#if 0阻止代码段
  9. kakfa从入门到放弃(四): 分区和副本机制、高级与低级API、 kafka-eagle、原理、数据清理、限速
  10. 双闭环可逆直流脉宽pwm调速系统设计及matlab仿真验证_,双闭环可逆直流脉宽PWM调速系统的设计最终版(手机版)...