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

网站建设总体说明亚洲精华国产精华液的护肤功效

网站建设总体说明,亚洲精华国产精华液的护肤功效,珠海企业建站程序,网站运营管理的内容有哪些文章目录[蓝桥杯 2021 省 B] 杨辉三角形题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路:全部代码:[蓝桥杯 2021 省 B] 杨辉三角形 题目描述 下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列&…

文章目录

  • [蓝桥杯 2021 省 B] 杨辉三角形
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
      • 思路:
      • 全部代码:

[蓝桥杯 2021 省 B] 杨辉三角形

题目描述

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

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

1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,…1,1,1,1,2,1,1,3,3,1,1,4,6,4,1, \ldots1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,

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

输入格式

输入一个整数 NNN

输出格式

输出一个整数代表答案。

样例 #1

样例输入 #1

6

样例输出 #1

13

提示

对于 20%20 \%20% 的评测用例, 1≤N≤101 \leq N \leq 101N10;

对于所有评测用例, 1≤N≤1091 \leq N \leq 10^91N109

蓝桥杯 2021 第一轮省赛 B 组 H 题。

思路:

1·以斜着看,首先我们可以从中间把这个三角形劈成两半,因为左右对称,留左半。左半有了肯定就是最先出现的
在这里插入图片描述

2.看图,第一行得数都是C(0,N)第二行都是C(1,N)第三行都是C(2,N)以此类推第i行就是C(i,N),也就是说每一行的数都可以用组合数来表示大小,需要有一个求组合数的函数:

//求组合数
long long C(int a, int b)
{long long x = 1, y = 1;for (int i = a, j = b; j >= 1; i--, j--){x = x * i;y = y * j;if (x / y > n){ //如果在这过程中已经大于N了就没必要再继续了return x / y;}}return x / y;
}

2.我们知道了这个数的大小与行和列有关那这就转变为在第i行第j列的数的大小,我们可以发现这个的每一行的第一个数的的组合数下面的那个数都是从2i开始的,所以我们可以用二分法来找L=2i,R=n;

for (int i = 0; i <=14; i++) // 遍历行{long long L = 2 * i, // 为什么是2*iR = n, mid;while (L <= R){mid = (L + R) / 2;if (C(mid, i) > n){R = mid - 1;}else if (C(mid, i) < n){L = mid + 1;}else if (C(mid, i) == n){flag = true;break;}}

3这样我们可以找到这个数的i,和j然后可以发现找到一个数的i和j之后这个数所在的位置就是
所在行-1可以发现是一个等差数列,然后在加上在本行的位置就能得出结果:公式为(j + 1) * j / 2 + i + 1;

if (flag == true){cout << (mid + 1) * mid / 2 + i + 1;break;}

4.在找得时候我们用二分的方法来找!!节省时间!!!


qwq,博主是个大笨蛋找不到规律根本Orz

全部代码:

#include <iostream>
using namespace std;
int n;
long long C(int a, int b)
{long long x = 1, y = 1;for (int i = a, j = b; j >= 1; i--, j--){x = x * i;y = y * j;if (x / y > n){ // 如果在这过程中已经大于N了,就没必要再继续了return x / y;}}return x / y;
}
// 一个十分简单的算组合数的函数
int main()
{cin >> n;bool flag = false;for (int i = 0; i <=14; i++) // 遍历行{long long L = 2 * i, // 为什么是2*iR = n, mid;while (L <= R){mid = (L + R) / 2;if (C(mid, i) > n){R = mid - 1;}else if (C(mid, i) < n){L = mid + 1;}else if (C(mid, i) == n){flag = true;break;}}if (flag == true){cout << (mid + 1) * mid / 2 + i + 1;break;}}system("pause");
}
http://www.hrbkazy.com/news/53911.html

相关文章:

  • 电脑上wap网站促销活动推广方法有哪些
  • 家里的电脑怎样做网站赚钱抖音推广
  • 防红域名生成seo推广专员招聘
  • 制作专业网站网络营销的收获与体会
  • 手机网站制作公司报价seo赚钱暴利
  • 品牌宣传策划公司广东做seo的公司
  • 网站备案最快几天百度推广多少钱一天
  • 诸城 网站 建设商品推广软文范例100字
  • 做素材类的网站赚钱吗某产品网络营销推广方案
  • 做网站推广费用网络搭建是干什么的
  • 南宁电商网站建设百度点击快速排名
  • 潮汕网站建设万网官网域名注册
  • 做销售平台哪个网站好短视频怎么赚钱
  • 专门给代购做的网站推广软文是什么意思
  • 仿做网站可以整站下载器吧sem代运营托管公司
  • 徐州网站客户深圳最好seo
  • 建设银行网站可以查保单吗最近一周的重大热点新闻
  • 丹东网站推广搜狗输入法下载安装
  • wordpress响应 延时河南网站优化排名
  • html5手机网站制作教程腾讯推广一次广告多少钱
  • 零基础电商怎么做九江seo公司
  • 广东省有多少个市seo网络贸易网站推广
  • 单页产品销售网站如何做推广长沙百度贴吧
  • 网站建设概念股汕头网站建设
  • 网站开发 产品经理百度关键词挖掘工具
  • 网站建设没有预付款南昌关键词优化软件
  • 铝合金做网站如何免费自己创建网站
  • 建设一个asp网站广州外包网络推广公司
  • 怎么样增加网站权重网站关键词优化公司哪家好
  • 网站商城例子下载推广普通话手抄报图片大全