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

上海网站建设推广服务杭州网络排名优化

上海网站建设推广服务,杭州网络排名优化,wordpress破解版 博客模板,美国做调查的网站文章目录[蓝桥杯 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.khdw.cn/news/49050.html

相关文章:

  • wordpress社区论坛模板西安关键词优化平台
  • 开封市建设银行网站上海关键词推广
  • 网站开发上市公司百度指数怎么提升
  • 织梦cms网站网站广告调词平台
  • 江西医院网站建设2022年新闻热点事件
  • 无锡企业网站排名舆情信息在哪里找
  • 网站友情链接怎么做网站一般怎么推广
  • 学做效果图网站有哪些站长之家域名信息查询
  • 建站模板怎么选制作网页的流程步骤
  • 什么网站动物和人做的百度注册
  • 顺德大良那里做网站好河南网站seo费用
  • 网站建设的公司做销售丁的老头seo博客
  • 微信公众号 小程序seoul是什么意思中文
  • php网站开发技术湖南广告优化
  • 做易经网站线上推广100种方式
  • behance官网入口站长工具seo综合查询源码
  • 做优化的网站seo平台代理
  • 大连网站建设个人四川seo排名
  • 平面设计接单兼职太原优化排名推广
  • wordpress 弹窗广告插件有没有免费的seo网站
  • 在家做网站怎么赚钱企业网站设计思路
  • 重庆建设网站哪个好网站优化要做哪些
  • 南昌官网seo诊断抖音seo搜索引擎优化
  • 可以做直播卖产品的网站网络推广怎么做方案
  • 怎么做百度采购网站厦门seo俱乐部
  • visual c 网站开发山东网站建设
  • 做论坛推广的网站凤山网站seo
  • 商标设计网站图杭州百度开户
  • 郑州网站制作的公司哪家好一份完整app运营推广方案
  • 做网站定金是多少钱佛山网站建设制作