蓝桥杯2021年第十二届省赛-杨辉三角形
蓝桥杯2021年第十二届省赛真题-杨辉三角形 - C语言网 (dotcpp.com)https://www.dotcpp.com/oj/problem2610.html
参考:
2021第十二届蓝桥杯省赛AB组C++组 杨辉三角形_skgion的博客-CSDN博客
二分法的边界问题详细分析_Lin_RD的博客-CSDN博客_二分法如何确定边界
这道题思路:
1.杨辉三角形——>组合数——>组合数的解法;
2.找规律——>可以把杨辉三角形对半分,斜着看,从左往右数第x条斜着的上的数是mCx,m是从2*x开始的数(如下方举例)——>每条边都单调递增,找数字通过二分找;
例如:
从2开始的那条斜边:2-3-4-5-6-……即为2C1,3C1,4C1,5C1,6C1……
从6开始的那条斜边:6-10-15-21-……即为4C2,5C2,6C2,7C2……
从20开始的那条斜边:20-35-56……即为6C3,7C3,8C3……
解题时:
1.按计算器发现:30C15=155117520>1E9,28C14=4011660,所以可以从 左数第14条边 向 第一条边找(srds 解题网站上从第8条边开始找也能过)
2.组合数的计算:用数学公式直接算
long long ans=1;//直接算组合数,q是下面的,x是上面的,ans是结果for(int i=1,j=q-x+1;i<=x;i++,j++)ans=ans*j/i;
因为这样算组合数,ans是递增,所以当ans大于要找的数n时,直接返回ans(这个时候ans虽然不是组合数的答案,但也是比n大的)
(一开始用数组算组合数c[i][j]=c[i-1][j]+c[i-1][j-1];,结果时间还没炸,空间先炸了orz)
3.二分法:
设x是要找的那条边的序号。L=2*x,因为所有的边开始的第一个数字都是(2*x)Cx,R=n,因为最坏的结果是nC1。二分要查找的区间是[l,r]闭区间(具体的可以看参考网址中的二分法),同时一条边上的数(除了第0条边)都是严格单调递增(每个数都不一样),所以mid找到了就可以输出了。
4.如何确定n是第几个数:设n=qCx,然后找规律:
6=4C2,在第13个数-->(1+2+3+4)+2+1
10=5C2,在第18个数-->(1+2+3+4+5)+2+1
7=7C1,在第30个数-->(1+2+3+4+5+6+7)+1+1
……
所以,n=qCx,数的位置:(1+2+3+……+q)+x+1=(q+1)*q/2+x+1;
#include<bits/stdc++.h>
using namespace std;
long long n;
long long C(long long q,long long x)
{long long ans=1;for(int i=1,j=q-x+1;i<=x;i++,j++){ans=ans*j/i;if(ans>n)return ans;}return ans;
}
bool check(long long x)
{long long l=2*x,r=n,q;//mid要在l和r闭区间里面!while(l<=r){long long mid=l+(r-l)/2;q=C(mid,x);if(q>n){r=mid-1;}else if(q<n){l=mid+1;}else {cout<<(mid+1)*mid/2+x+1<<endl;//这里一定要/2,不然卡在45qwqreturn 1;}}return 0;
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cin>>n;for(int i=14;i>=0;i--){if(check(i))break;}return 0;
}
蓝桥杯2021年第十二届省赛-杨辉三角形相关推荐
- C++ | 蓝桥杯2021年第十二届卡片问题(源代码:C语言/C++/Python)
================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...
- 【蓝桥杯嵌入式】第十二届蓝桥杯嵌入式省赛程序设计试题以及详细题解
原题展示 通读本试题后,可以知本试题所涉及到的模块有LCD显示.LED指示.按键切换.串口收发.定时器的PWM输出五个部分,试题的总体变化不大.在试题要求的所有功能中,串口这部分是侧重点,它既 ...
- 第十二届蓝桥杯2021年C++A组省赛题解
文章目录 注 考生须知 试题A:卡片 试题B:直线 题解 代码(set + map) 试题C:货物摆放 题解 代码 试题D:路径 题解 代码 试题E:回路计数 题解 代码 试题F:砝码称重 题解 代码 ...
- 【蓝桥杯嵌入式】第十二届蓝桥杯嵌入式省赛客观题及详细题解
题1 解析: 波特率,指每秒钟传输码元符号的个数,对符号传输速率的一种度量,单位为1baud/s. 由于串口只有高低电平之分,即1码元等于1bit,即波特单位1baud和1bit等效,因此,此时的波特 ...
- [蓝桥杯]2019年第十届省赛真题C/C++ B组 填空+大题
第十届蓝桥杯省赛题目 填空A:组队 填空B:年号字串 填空C:数列求值 填空 D: 数的分解 填空 E: 迷宫 大题F:特别数的和 大题G:完全二叉树的权值 大题H:等差数列 大题I-后缀表达式 填空 ...
- 题目 2311: 蓝桥杯2019年第十届省赛真题-Fibonacci 数列与黄金分割
题目 Fibonacci 数列是非常著名的数列: F[1] = 1,F[2] = 1, 对于 i > 3,F[i] = F[i − 1] + F[i − 2] Fibonacci 数列有一个特殊 ...
- 【STM32G4】备战蓝桥杯嵌入式---实战---第十二届嵌入式模拟赛
文章目录 前言 一.题目 功能简述 二.模块初始化以及功能分析 1.模块的初始化 2.模块功能分析 三.函数实现 1.void Display(void); 2.uint8_t KEY_Scan(ui ...
- 蓝桥杯2019年第十届国赛真题-大胖子走迷宫
题目 题目链接 题解 BFS. 整体思路:将位置信息和时刻信息放入队列,根据时刻信息判断当前时刻小明的大小,如果大小为1×11×11×1则不能原地停留,因为没意义啊,停留是为了让自己的肚子减小,但是1 ...
- 蓝桥杯2021届C++B组省赛真题 杨辉三角形
分析: 1. 首先他要我们找第一次出现N的位置,我们可以发现杨辉三角是两边完全对称的,在右边出现的在左边一定先出现过,所以N只可能出现在左半边,我们将右半边删去 2. 这道题的数据规模特别大,那么我们 ...
最新文章
- JavaMelody+Spring+struts2配置详解——系统监控
- python软件是免费的吗-谁说程序员不懂浪漫?用Python每天自动给女朋友免费发短信...
- POJ 3034 Whac-a-Mole(DP)
- 中fuse_一个Fanotify和FUSE配合使用导致的问题
- Android studio 运行即打包keystore之build.gradle设置
- 6大设计原则之单一职责原则
- android表白app
- Bloom是REST API缓存中间件,充当负载平衡器Nginx和REST API服务之间的反向代理
- python3下的IE自动化模块PAMIE
- 【2019.09.14】2019icpc沈阳网络赛
- 《Python爬虫开发与项目实战》——第1章 回顾Python编程 1.1 安装Python
- svnadmin dump导入导出命令
- 2019年上海交通大学816自动控制理论考研经验分享
- 打印学生选课清单(25分) c++实现
- Mybatis整合达梦数据库
- 谈谈百度搜索解封经验与技巧(转)
- Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference
- 剑指offer-20200226
- 项目风险常见清单列表库
- 【蓝桥杯真题】成绩统计
热门文章
- Matlab实现图像压缩
- thingsboard使用教程
- 智哪儿现场:凯迪仕建博会发布新品“千里眼”智能锁K20 Pro Max,行业新标杆
- LWN:利用 __GFP_UNMAPPED 减少direct-map 碎片化!
- PIE-engine 教程 ——坡度、坡向、山阴、粗糙度计算和显示案例分析
- ios实现qq空间飘落的花瓣(swift—粒子发射器)
- 微信拍一拍功能上线,网友表示:别扒拉我!
- 全国计算机等级考试二级教程c语言程序设计考试大纲,全国计算机等级考试二级C语言程序设计考试大纲.docx...
- 利用shift连点五次进入电脑
- 由DIY想到的面向对象思想