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

杨辉三角形(蓝桥杯,acwing)

题目描述:

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

QQ截图20210423150438.png

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

1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, ...

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

输入格式:

输入一个整数 N。

输出格式:

输出一个整数代表答案。

数据范围:

对于 20% 的评测用例,1≤N≤10;
对于所有评测用例,1≤N≤1e9。

输入样例:

6

输出样例:

13

这个图是来自acwing的东风祝酒的图片

分析步骤:

  第一:理清思路:

  1. 众所周知,杨辉三角中华瑰宝,他这个三角型是对称的,如果我们要求出哪个点是第一次出现的那么一定是在这个三角形的左边!我们可以把右半部分删掉,完全不用考虑。这是本题目第一个特点。

  2. 现在我们再斜着看一看,把斜着的看做一个序列。第一行数坐标就是(0,0),第二行从左到右就是(1,0),(1,1).....以此类推。我们再看到中间紫色的这一列数值永远就是C2k^k并且永远是这个数最大,我们就可以从这个数开始找起。而且题目中说到了N最大就是1e9,那么C34^17>1e9 ; C32^16<1e9所以我只需要找前面16个斜行就行了这是本题的第二个特点。

  3. 我们现在想想,如果一个一个去找的话速度太慢了。因为序列的单调的这一眼就能看出来,而且我们需要找一个特定的,在这个值的左边就会太小了,在这个值的右边就会太大了,就可以将其分为两个部分这就符合了我们二分的特点,因此我们直接从中间对称轴倒序二分找起即可!这就是本题的第三个特点。

  4. 大家一定要好好看看这图,仔细去理解!!

  第二:书写主函数,构建整体框架:

  1. 因为我们分析过了我们只需要枚举前16行就可以了,那么我们倒序枚举,检查一下这一行是不是我们想要的,是的话就代表找到了,就break退出。

int main()
{cin >> n;for (int k = 16; ; k -- )if (check(k))break;return 0;
}

  第三:书写check函数:

  1. 现在我们就入了其中的一个序列进行检查,运用二分的方法去查找。

  2. 首先我们要确定二分的左节点和右节点,所以我们定义LL l = k * 2, r = n;为什么这么定义呢?因为:在一个序列之中我们最小的值是上图中紫色的那一些数,这些数的特点是C2k^k,所以定义他们为最小的左边界节点,那么右边界节点就应该是最大的那个数字了,但是我们的杨辉三角是无穷的所以我们应该只需要找到题目给出的那个数字就可以了,那么这个数一定会在Cn^1的这个地方出现,因为这个值就是N。所以我们把右边界定义为n。

  3. 如果l比r都要大就直接返回false不可能在这一行因为这个数一定比这一序列的第一个数要小,就代表答案的位置在更靠前的序列之中。

  4. 进入while循环,计算我们的mid值计算我们的Cmid^k让这个数和n比较大小。如果这个数比n要大或等于的话就代表答案有可能在mid左边也就是更小的那一边,所以我们把r赋值给mid。反之答案比n更小的话,那么答案一定在mid的右边也就是更大的一边,就让mid+1赋值给l。

  5. 经过了一轮的while循环判断之后,再去计算一下Cr^k看看和答案是否一致,如果不一致就是错

  6. 最终输出位置即可。

bool check(int k)
{LL l = k * 2, r = n;if (l > r) return false;while (l < r){LL mid = l + r >> 1;if (C(mid, k) >= n) r = mid;else l = mid + 1;}if (C(r, k) != n) return false;cout << r * (r + 1) / 2 + k + 1 << endl;return true;
}

  第四:书写计算组合数的函数:

  1. 我们计算组合数直接暴力做就可以,利用双指针一起去求解

LL C(int a, int b)
{LL res = 1;for (int i = a, j = 1; j <= b; i --, j ++ ){res = res * i / j;if (res > n) return res;}return res;
}

代码:

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;typedef long long LL;int n;LL C(int a, int b)
{LL res = 1;for (int i = a, j = 1; j <= b; i --, j ++ ){res = res * i / j;if (res > n) return res;}return res;
}bool check(int k)
{LL l = k * 2, r = n;if (l > r) return false;while (l < r){LL mid = l + r >> 1;if (C(mid, k) >= n) r = mid;else l = mid + 1;}if (C(r, k) != n) return false;cout << r * (r + 1) / 2 + k + 1 << endl;return true;
}int main()
{cin >> n;for (int k = 16; ; k -- )if (check(k))break;return 0;
}

相关文章:

杨辉三角形(蓝桥杯,acwing)

题目描述&#xff1a; 下面的图形是著名的杨辉三角形&#xff1a; 如果我们按从上到下、从左到右的顺序把所有数排成一列&#xff0c;可以得到如下数列&#xff1a; 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, ... 给定一个正整数 N&#xff0c;请你输出数列中第一次出现…...

计算系数(acwing,数论)

题目描述&#xff1a; 给定一个多项式 (axby)^k&#xff0c;请求出多项式展开后 x^n*y^m 项的系数。 输入格式&#xff1a; 共一行&#xff0c;包含 5 个整数&#xff0c;分别为 a&#xff0c;b&#xff0c;k&#xff0c;n&#xff0c;m&#xff0c;每两个整数之间用一个空格…...

阿里面试题二

实在是太长了 重新开一篇吧 dubbo 服务暴露 Dubbo——服务调用、服务暴露、服务引用过程 - 简书 这两篇文章写的是极好 我现在查得资源强的可怕朋友们 服务降级 MockClusterInvoker 负载均衡策略 容错机制在哪里实现的源码 通信 NIO、BIO区别&#xff0c;NIO解决了什么…...

第9章 文件和内容管理

思维导图 9.1 引言 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理。它的重点在于保持文件和其他非结构化或半结构化信息的完整性&#xff0c;并使这些信息能够被访问。文件和非结构化内容也应是安全且高质量的。 确保文件和内容…...

【Erlang】【RabbitMQ】Linux(CentOS7)安装Erlang和RabbitMQ

一、系统环境 查版本对应&#xff0c;CentOS-7&#xff0c;选择Erlang 23.3.4&#xff0c;RabbitMQ 3.9.16 二、操作步骤 安装 Erlang repository curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash安装 Erlang package s…...

pe格式从入门到图形化显示(七)-导出表

文章目录 前言一、什么是Windows PE格式中的导出表&#xff1f;二、解析导出表并显示1.导出表的结构2.解析导出表3.显示导出表 前言 通过分析和解析Windows PE格式&#xff0c;并使用qt进行图形化显示 一、什么是Windows PE格式中的导出表&#xff1f; PE文件格式的导出表是P…...

图片地址生成二维码(通过前端实现)

文章目录 概要安装插件代码实例 概要 要将图片地址生成二维码&#xff0c;你可以使用 QrCode 库&#xff08;假设你已经在项目中引入了该库&#xff09;。以下是一个简单的示例代码&#xff0c;演示了如何使用 QrCode 库将图片地址转换为二维码并显示在页面上 安装插件 先下载…...

window安装maven和hadoop3.1.4

前面的文章已讲解如何安装idea和进行基本设置&#xff0c;本文主要带着大家安装配置好maven和hadoop. 大家不用去官网下载&#xff0c;直接使用我发给大家的压缩文件&#xff0c;注意解压后的文件夹不要放在中文目录下&#xff0c;课堂上我们讲解过原因。 这是我电脑上的路径&a…...

Redis系列之主从复制集群搭建

在上一篇博客&#xff0c;我们已经知道怎么搭建一个redis单机版&#xff0c;这篇博客基于之前的基础&#xff0c;来搭建一个redis主从同步&#xff0c;本博客框架是一主二从&#xff0c;一个主节点&#xff0c;其它两个从节点 实验环境 CentOS7Xshell6XFtp6Redis6.2.2 主从关…...

spring框架介绍

spring 1.优点 1&#xff09;针对接口编程&#xff0c;解耦合 2&#xff09;aop&#xff1a;变向切面编程&#xff0c;动态增加功能 3&#xff09;方便集成框架&#xff0c;mybatis,hibernate,strust等 4&#xff09;降低j2ee接口的使用难度 2.spring是干什么的 管理bean及bean…...

如果在 Ubuntu 系统中两个设备出现两个相同的端口号解决方案

问题描述&#xff1a; 自己的移动机器人在为激光雷达和IMU配置动态指定的端口时&#xff0c;发现激光雷达和深度相机配置的 idVendor 和 idProduct 相同&#xff0c;但是两个设备都具有不同的ttyUSB号&#xff0c;如下图所示 idVendor&#xff1a;代表着设备的生产商ID,由USB设…...

随手分享的APP链接,可能会让你“大型社死”

早晨上班路上&#xff0c;你在地铁百无聊赖地刷着短视频&#xff0c;看到一则好笑的&#xff0c;随手分享给了你的公司“饭搭子”&#xff0c;并配上了一串“哈哈哈哈哈哈”。 晚上下班路上你再次打开视频APP&#xff0c;发现首页弹窗给你推荐了一组“可能认识的人”&#xff…...

国内AI大模型已近80个,哪个最有前途?

根据中国新一代人工智能发展战略研究院发布的报告显示&#xff0c;目前全国已有3k&#xff0b;家人工智能企业&#xff0c;国内的AI大模型应该也近在200了&#xff01;&#xff01;&#xff01; &#xff08;原图图片过长了&#xff0c;这里就先放了20个&#xff09; 面对如…...

美团一面:说说synchronized的实现原理?问麻了。。。。

引言 在现代软件开发领域&#xff0c;多线程并发编程已经成为提高系统性能、提升用户体验的重要手段。然而&#xff0c;多线程环境下的数据同步与资源共享问题也随之而来&#xff0c;处理不当可能导致数据不一致、死锁等各种并发问题。为此&#xff0c;Java语言提供了一种内置…...

P1123 取数游戏(dfs算法)

题目描述 一个 NM 的由非负整数构成的数字矩阵&#xff0c;你需要在其中取出若干个数字&#xff0c;使得取出的任意两个数字不相邻&#xff08;若一个数字在另外一个数字相邻 8个格子中的一个即认为这两个数字相邻&#xff09;&#xff0c;求取出数字和最大是多少。 输入格式 第…...

交叉验证(Cross-Validation)

交叉验证的基本概念 交叉验证通常用于评估机器学习模型在未知数据上的性能。它将数据集分成k个不同的子集&#xff0c;然后进行k次训练和验证。在每次迭代中&#xff0c;选择一个子集作为测试集&#xff0c;其余的子集作为训练集。这样&#xff0c;每个子集都用作过测试集&…...

【kears】(01)keras使用介绍

文章目录 一.特点二.keras如何支持TensorFlow、CNTK 和 Theano2.1 使用 TensorFlow 后端引擎训练和评估模型2.2 使用 TensorFlow 后端引擎训练和评估模型2.3 使用 Theano后端引擎训练和评估模型2.4 不同深度学习框架如何选择1.1 keras.datasets&#xff1a;包含多种常用数据集1…...

2. TypeScript 安装与环境配置指南

TypeScript 是 JavaScript 的一个超集&#xff0c;它为 JavaScript 增加了类型系统和对 ES6 的支持。TypeScript 不仅能够帮助开发者捕获代码中的错误&#xff0c;还能提供更好的编辑器支持&#xff0c;包括代码补全、接口提示等。本文将详细介绍如何在您的开发环境中安装和配置…...

python pygame库的略学

文章目录 概述1. pygame的初始化和退出2. 创建游戏窗口&#xff08;1&#xff09;set_mode()&#xff08;2&#xff09;set_capyion()&#xff08;3&#xff09;update() 3. 游戏循坏与游戏时钟4. 图形和文本绘制&#xff08;1&#xff09;图形绘制&#xff08;2&#xff09;文…...

大模型日报2024-04-09

大模型日报 2024-04-09 大模型资讯 苹果预告超越ChatGPT的新AI模型ReaLM 摘要: 苹果公司最新宣布&#xff0c;即将推出一款名为ReaLM的人工智能模型。这款AI技术在理解复杂屏幕用户指令方面表现出高超的能力&#xff0c;并能与用户进行自然流畅的对话。ReaLM的推出预示着苹果在…...

QuickSnap:Blender三维建模效率革命,快速对齐插件让精准建模变得简单

QuickSnap&#xff1a;Blender三维建模效率革命&#xff0c;快速对齐插件让精准建模变得简单 【免费下载链接】quicksnap Blender addon to quickly snap objects/vertices/points to object origins/vertices/points 项目地址: https://gitcode.com/gh_mirrors/qu/quicksnap…...

重装系统后的环境快速恢复:包含BERT模型部署的自动化脚本

重装系统后的环境快速恢复&#xff1a;包含BERT模型部署的自动化脚本 重装系统&#xff0c;对开发者来说&#xff0c;就像一场“数字大扫除”。清爽是清爽了&#xff0c;但看着空空如也的终端和待部署的一长串服务列表&#xff0c;那种从头再来的疲惫感瞬间涌上心头。尤其是当…...

FPGA网络加速入门:拆解Xilinx 7系列GTP与1G/2.5G Ethernet PCS/PMA IP核,搞懂SGMII接口那些事

FPGA网络加速实战&#xff1a;从Xilinx GTP架构到SGMII接口的深度解析 在FPGA高速通信领域&#xff0c;以太网接口设计一直是工程师面临的核心挑战之一。当我们需要在Xilinx 7系列FPGA上实现1G/2.5G以太网功能时&#xff0c;GTP收发器与PCS/PMA IP核的配置往往成为项目成败的关…...

智能影像雅鉴系统:丹青识画在美术馆导览中的落地实操

智能影像雅鉴系统&#xff1a;丹青识画在美术馆导览中的落地实操 1. 艺术与科技的完美融合 1.1 传统导览的痛点与革新 在美术馆参观时&#xff0c;我们常常面临这样的困境&#xff1a;站在一幅名画前&#xff0c;却无法真正理解其深层意境&#xff1b;面对珍贵文物&#xff…...

Cogito v1预览版3B模型实战体验:超越Llama/DeepSeek的混合推理能力

Cogito v1预览版3B模型实战体验&#xff1a;超越Llama/DeepSeek的混合推理能力 1. 模型概览与核心优势 1.1 什么是Cogito v1预览版 Cogito v1预览版是Deep Cogito推出的混合推理模型系列&#xff0c;这个3B参数的版本在多项基准测试中表现优异。与传统的语言模型不同&#x…...

HUNYUAN-MT 7B翻译终端Python爬虫数据清洗实战:多语言文本归一化处理

HUNYUAN-MT 7B翻译终端Python爬虫数据清洗实战&#xff1a;多语言文本归一化处理 1. 引言 你有没有遇到过这种情况&#xff1f;辛辛苦苦用Python爬虫从全球各地的网站、论坛、社交媒体上抓取了一大堆数据&#xff0c;准备做分析或者训练模型&#xff0c;结果打开一看&#xf…...

5个步骤掌握PatternMaster图案生成工具:提升设计效率的自动化解决方案

5个步骤掌握PatternMaster图案生成工具&#xff1a;提升设计效率的自动化解决方案 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 在数字设计领域&#xff0c;效率与创意往往难以兼…...

uniapp 雪花算法封装类

1. uniapp 雪花算法封装类 雪花算法(SnowFlake)生成64位整数ID,具有全局唯一、趋势递增、高性能等特点,适合分布式系统。 1.1. 解决分布式全局唯一ID的方法 1.1.1. UUID UUID做全局ID的弊端:UUID是由数字加字母的形式组成,无法保持递增,它使得聚簇索引(主键值和行数据…...

别再只用命令行!华为防火墙USG6000V的Web界面到底怎么玩?eNSP实战演示

华为USG6000V防火墙Web界面高效操作指南&#xff1a;从CLI到图形化的思维转换 对于习惯了命令行操作的老牌网络工程师来说&#xff0c;第一次接触华为USG6000V防火墙的Web管理界面时&#xff0c;往往会陷入一种矛盾心理——既惊叹于可视化操作的直观&#xff0c;又担心图形化界…...

在供应链与资本获取驱动下,近半数全球高管计划于未来12个月内拓展美国业务布局

• 45%的企业高层管理人员计划在未来12个月内设立美国法律实体&#xff1b;另有27%表示将在未来两至三年内考虑进入美国市场 • 65%的受访者将供应链或制造效率视为推动赴美扩张的首要驱动因素 • 88%的企业将联邦及州层面的税务申报认定为美国合规中最具挑战性的领域 CSC最新研…...