蓝桥杯每日N题(杨辉三角形)

这篇具有很好参考价值的文章主要介绍了蓝桥杯每日N题(杨辉三角形)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注

不清楚蓝桥杯考什么的点点下方👇

考点秘籍

想背纯享模版的伙伴们点点下方👇

蓝桥杯省一你一定不能错过的模板大全(第一期)

蓝桥杯省一你一定不能错过的模板大全(第二期)

蓝桥杯省一你一定不能错过的模板大全(第三期)

蓝桥杯省一你一定不能错过的模板大全(第四期)!!!

想背注释模版的伙伴们点点下方👇

蓝桥杯必背第一期

蓝桥杯必背第二期

往期精彩回顾

蓝桥杯上岸每日N题 第一期(一)!!!

蓝桥杯上岸每日N题第一期(二)!!!

蓝桥杯上岸每日N题第一期(三)!!!

蓝桥杯上岸每日N题第二期(一)!!!

蓝桥杯上岸每日N题第三期(一)!!!

蓝桥杯上岸每日N题 第四期(最少刷题数)!!!

蓝桥杯上岸每日N题 第五期(山)!!!

蓝桥杯上岸每日N题 第六期(求阶乘)!!!

蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

蓝桥杯上岸每日N题 第八期 (全球变暖)!!!

蓝桥杯每日N题 (消灭老鼠)

操作系统期末题库 第九期(完结)

LeetCode Hot100 刷题(第三期)

idea创建SpringBoot项目报错解决方案

数据库SQL语句(期末冲刺)

想看JavaB组填空题的伙伴们点点下方 👇

填空题

竞赛干货

算法竞赛字符串常用操作大全

蓝桥杯上岸必刷!!!(模拟/枚举专题)

蓝桥杯上岸必背!!! (第三期 DP)

蓝桥杯上岸必背!!!(第四期DFS)

蓝桥杯上岸必背!!!(第五期BFS)

蓝桥杯上岸必背!!!(第六期树与图的遍历)

蓝桥杯上岸必背!!!(第七期 最短路算法)

蓝桥杯上岸必背!!!(第八期 简单数论)

蓝桥杯上岸必刷!!!(进制、数位专题)

蓝桥杯上岸考点清单 (冲刺版)!!!

蓝桥杯上岸必背模板 (纯享版)

考点:二分+求组合数

分析

要在这堆数字中找到n
观察发现:
(1)三角形左右两边的数字对称
我们只需要看左半边的数字即可

(2)画一条中轴线在中间
发现中轴线上的点的值为C(2n,n)
找的时候,从内往外找,依次去枚举每一斜行。
为什么?
假设我们找到n,那外面的数字必然是小于n的,所以我们从内开始去找n。
第一次找到的数必定在左边且减少我们的枚举次数。

接下来怎么做?
我们从第16斜行去枚举中轴线上的起点开始,依次去枚举每一斜行
从中查找组合数,看能否二分出答案来

概念理清:

组合数:C(a,b)
a:底数–>当前枚举的斜行数–>二分的答案(r)
**b:**真数–>k

二分过程

不清楚二分的过程可以看下面的图:

蓝桥杯每日N题(杨辉三角形),蓝桥杯上岸,蓝桥杯,算法,模板,java,二分,杨辉三角形

图形解读:

组合数:C(a,b)
a:底数–>当前枚举的斜行数–>二分的答案(r)
b:真数–>k

枚举的是每一斜行,从中轴线的起点开始。
相当于我check一个k(枚举的斜行数),我二分的是当前这一斜行的组合数的底数。
根据二分原理,去更新mid的值。
再看我当前枚举的这一斜行C(mid,k)能否找到n
枚举这一斜行都找不到后,我再往前去枚举上一斜行,直至第一个斜行

求组合数

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

杨辉三角形数字定位技巧

在数字序列的第几个位置(r+1)*r/2+k+1
r:组合数的底数文章来源地址https://www.toymoban.com/news/detail-654485.html

代码详解

import java.util.*;
public class Main{
  static int n;
  public static long C(long a,long b) {
     //求组合数
	long res=1;
	for(long i=a,j=1;j<=b;i--,j++) {
		res=res*i/j;
		if(res>n)return res;
	}
	return res;
    }
    
    public static boolean check(int k) {
	long l=2*k,r=Math.max(l,n);
    //记得l,n取max,否则最一开始当l>r时无法二分
	//C(l,r):l表示的是组合数底数的下界
	//       r表示的是组合数底数的上界
	
	//二分
	while(l<r) {
    long mid=l+r>>1;
	if(C(mid,k)>=n)r=mid;
	//更新我当前枚举的这一斜行组合数的底数
	//让它往上或往下走
	else l=mid+1;
	}
	
	if(C(r,k)!=n)return false;
	//找不到等于n的数,就返回false,去枚举下一斜行。
	
//C(r,k):二分出的组合数
//k:k表示的是列数,由于是从第0行开始,所以是k+1
//这样可以得出数字n在第几列。

//r:r表示的是行数,(1+r)*r/2可以得到数字在哪一行
//(1+r)*r/2再加上移动的第几列即k+1
//这样可以得到n在整个序列中是在第几个位置。
	System.out.println((1+r)*r/2+k+1);
	return  true;
    }
    
    public static void main(String []args){
        Scanner sc=new Scanner(System.in);
        n=sc.nextInt();
        for(int i=16;;i--){
            //C16的32小于1e9
            //从16斜行开始枚举
            //找到满足条件的数就break
            if(check(i))break;
        }
    }
}

创作不易,欢迎大家多多关注,Thankyou~

到了这里,关于蓝桥杯每日N题(杨辉三角形)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯上岸每日N题 (修剪灌木)

    爱丽丝要完成一项修剪灌木的工作。 有 N 棵灌木整齐的从左到右排成一排。 爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 0 厘米。 爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。 当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修

    2024年02月11日
    浏览(37)
  • 蓝桥杯上岸每日N题第一期(二)!!!

    这道题我们可以得出的是二分的结果是满足k块巧克力的最大边长是多少? 题目要求: 1.形状是正方形,边长是整数 2.大小相同 即要求边长均为x 我们就可以确保得到 边长一致的正方形 大小相同即分出的块数为整数, 向下取整!!! 得到能够凑出的整块巧克力 如果分出的块

    2024年02月16日
    浏览(39)
  • 蓝桥杯上岸每日N题 第一期(一)!!!

    2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。 有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到

    2024年02月16日
    浏览(43)
  • 蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

    要尽可能减少花费--递归的分支尽可能少--优先考虑放重猫 优先考虑放重猫 ,需要从 大到小排个序 , 一直往下搜索,答案是唯一的。 放得下猫就 继续往该车往下加 放不下就再 另外开一辆放猫 分两个分支去放 开一辆继续放其他猫的为一个分支 开另一辆单独只放一只猫的为

    2024年02月14日
    浏览(71)
  • Java 实现杨辉三角形

    杨辉三角形,也被称为帕斯卡三角形,是一种由数字构成的三角形,它的特点是每个数字都是它上方两个数字的和。这个三角形是以法国数学家布莱兹·帕斯卡和中国数学家杨辉命名的。 杨辉三角形的原理可以通过以下步骤来解释: 第一行只有一个数字 1。 第二行有两个数字

    2024年02月15日
    浏览(34)
  • 蓝桥杯上岸每日N题 第八期 (全球变暖)!!!

    其中”上下左右”四个方向上 # 连在一起的一片陆地组成一座岛屿。 具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋 . ),它就会被淹没。 注:图中有3个岛屿,上下连续区域。 注:题中有一个岛屿全被淹没 观察一下:岛屿中陆地的数量和海洋的数量是

    2024年02月14日
    浏览(63)
  • 蓝桥杯上岸每日N题 第四期(最少刷题数)!!!

    前缀和: 二分 (1)情况1 (2)情况2 对于每一名学生,请你计算他至少还要再刷多少道题,才能使得全班刷题比他多的学生数不超过刷题比他少的学生数。 全班刷题比他多的学生数不超过刷题比他少的学生数。 换句话说:全班刷题比他少的学生数=(大于等于)全班刷题比他多的学

    2024年02月14日
    浏览(64)
  • 大学经典题目:Java输出杨辉三角形

    本节利用​ 过 Java 语 ​言中的流程控制语句,如条件语句、循环语句和跳转语句等知识输出一个指定行数的杨辉三角形。 杨辉三角形由数字进行排列,可以把它看作是一个数字表,其基本特性是两侧数值均为 1,其他位置的数值是其左上方数值与右上角数值之和。打印杨辉

    2024年02月09日
    浏览(38)
  • 【蓝桥杯算法模板题--蓝桥题库Java】

    PDF下载地址:点击即可 题目描述 给定一个长度为 N 的数组 A ,请你先从小到大输出它的每个元素,再从大到小输出它的每个元素。 输入描述 第一行包含一个整数 N 。 第二行包含 N 个整数 a1,…,an ,表示数组 A 的元素。 1≤N≤5×10 5,−10 9≤ai≤10^9。 输出描述 输出共两行,

    2023年04月09日
    浏览(106)
  • 蓝桥杯每日一真题——[蓝桥杯 2022 省 B] 扫雷(dfs+二分)

    题目: 小明最近迷上了一款名为《扫雷》的游戏。其中有一个关卡的任务如下,在一个二维平面上放置着 n n n 个炸雷,第 i i i 个炸雷 ( x i , y i , r i ) left(x_{i}, y_{i}, r_{i}right) ( x i ​ , y i ​ , r i ​ ) 表示在坐标 ( x i , y i ) left(x_{i}, y_{i}right) ( x i ​ , y i ​ ) 处存在一个炸雷

    2023年04月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包