具体分析可以看:

第十二届蓝桥杯B组省赛杨辉三角形题解_Nervous_46216553的博客-CSDN博客

输入输出样例

示例 1

输入

6

输出

13

评测用例规模与约定

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

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

第一眼的思路是打表算呢,打算从组合数一个一个算来着这样的时间复杂度挺高的。

第二种思路是找路径:用C(m,n)的组合数来看,当前位置比N大则向左走,小则向下走一次,向中间走一次:

#include<iostream>
using namespace std;
long long m;//行-1
long long n;//列-1
long long v;//C(m,n)的值
long long temp;//临时变量用来提速
void down(){//下一层v=v*(m+1)/(m-n+1);++m;
}
void left(){//左一个v=v*n/(m-n+1);--n;
}
void center(){//尝试往中间靠temp=v*(m-n)/(n+1);//如果右边更大就向右,否则不用动if(v<temp){v=temp;++n;}
}
int main(){long long N,ans=0;cin >> N;v=1;m=1;n=0;while(1){//查找if(v<N){down();center();}else if(v>N){left();}else{break;}}//检查位置正确性//cout << m+1 << " " << n+1 << endl;ans=m*(m+1)/2+n+1;//前面的等差数列求和然后加当前行if(ans==2)ans=1;cout << ans << endl;return 0;
}

第三种思路是二分:

利用列的递增性质我们进行二分:

#include<iostream>
using namespace std;
long long N;
long long P(long long m,long long n){//计算m行n列的值--m;//P(m,m)=C(m-1,n-1)--n;n=max(n,m-n);//C(m,n)==C(m,m-n)long long ans=1;for(long long i=1;i<=(m-n);++i){ans*=(n+i);ans/=i;//由上文定理一定能除尽if(ans>N){//及时退出防止溢出(只用大小关系,不需要准确值)return N+1;}}return ans;
}
long long find(long long n){//二分查找第n列long long gap=1<<30,m=n;//不存在m不小于n的位置!!!while(gap){if(P(m,n)<N){//小了往前跑m+=gap;}else if(P(m,n)>N){//大了间距缩小往前找gap/=2;//(8,4,2,1一定能凑出<=15的所有数(就是二进制表示吗))m-=gap;}else{return (m)*(m-1)/2+n;//前面的行等差数列求和然后加当前行}}return (N+1)*(N+1);//找不到就返会一个一定超了的位置,别的如果找到一定排的靠前。
}
int main(){long long ans=1;cin >> N;if(N!=1)//因为第一列全是1,值相等所以不可以用二分查找ans=find(2);for(int i=3;i<=100;++i){//第N行总和2^n(每行的总和都是上一行的两倍),最大值肯定>(2^n)/n,左侧100列以内绝对足够搜出10^9的数值(因为前文组合数计算优化过了,根本不怕溢出,查几列随便二分查找的速度很快很快)ans=min(ans,find(i));//找最小的}cout << ans << endl;return 0;
}

蓝桥杯真题:杨辉三角形相关推荐

  1. 第八届蓝桥杯真题解析javaC组

    第八届蓝桥杯真题解析javaC组 文章目录 ***第八届蓝桥杯真题解析javaC组*** 前言 A.外星日历 B.兴趣小组 C.纸牌三角形 D.承压计算 E.杨辉三角 F.最大公共子串 G.Excel ...

  2. python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在19351936年应邀来中国清华大学讲学。。。

    python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学.他曾在1935~1936年应邀来中国清华大学讲学... 问题描述 全排列模板: 美国数学家维纳(N. ...

  3. 第五届蓝桥杯真题解析【JavaC组】

    第五届蓝桥杯真题解析[JavaC组] 业精于勤,荒于嬉:行成于思,毁于随.--韩愈 文章目录 ***第五届蓝桥杯真题解析[JavaC组]*** 前言 A:猜年龄 B:等额本金 C:猜字母 D:大衍数列 ...

  4. 【蓝桥杯真题】16天冲刺 Python

    距离比赛很快了,希望和我一起准备的PY党能更加熟练的掌握Python! 1.距离和(模拟赛填空题) 问题描述: 两个字母之间的距离定义为它们在字母表中位置的距离.例如 A和 C 的距离为 2,L 和  ...

  5. 蓝桥杯真题:三羊献瑞

    蓝桥杯真题:三羊献瑞 观查下面的加法算式: 其中相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写"三羊献瑞"所代表的4位数字(答案唯一),不要填写任何多余内容. 分析 ...

  6. # 2014年蓝桥杯真题CC++B组

    2014年蓝桥杯真题C/C++B组 1.啤酒和饮料 题目描述 啤酒每罐2.3元,饮料每罐1.9元,小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道她买的啤酒比饮料的数量多,请你计算他买了几罐啤 ...

  7. 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和

    注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...

  8. 第十届蓝桥杯c语言试题,第十届蓝桥杯真题编程题1-7解析(高级组).pdf

    scratch 少儿编程第十届蓝桥杯真题 7 大家好 ~今天我们来讲解 scratch 蓝桥杯第十届编程大题的第七道题. 同样,这道题也是非常有难度的一道题.一起来看一下吧 解析: 女孩的程序 1.在 ...

  9. 第九届蓝桥杯真题解析JavaC组

    第九届蓝桥杯真题解析JavaC组 文章目录 ***第九届蓝桥杯真题解析JavaC组*** 前言 A.哪天回家 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 ...

  10. 蓝桥杯真题2017-2021

    刷完近几年真题,感觉理解完之后,拿奖问题不大,本人这次获得2022年蓝桥杯javaB组省一,以下是历年javaB组省赛题目. 文章目录 2017年真题 一.购物单 二.纸牌三角形 三.承压计算 四.魔 ...

最新文章

  1. Wizard 开源文档管理系统1.0发布啦
  2. Tensorflow加载多个模型
  3. 逆势而上的技术:图神经网络学习来了!
  4. 备战秋招 |《百面机器学习》算法+leetcode开班报名!
  5. 织梦DedeCMS实现 三级栏目_二级栏目_一级栏目_网站名称 的效果代码
  6. 推特惊爆史诗级漏洞,App 恶意窃取用户隐私,云端安全路向何方?
  7. byteofpython中文gitbook_GitBook 简明教程
  8. D. Magic Gems(矩阵快速幂 || 无敌杜教)
  9. julia集 matlab代码,Julia中文手册1.1版本
  10. html 仿微信语音输入,AudioRecord仿微信录制语音
  11. UE4第三人称多人联机游戏开发02
  12. 分割符(split)
  13. 2022高处安装、维护、拆除考试题库及模拟考试
  14. Apifox实战——微信的第三方小程序提审发布
  15. 漫谈程序员系列:你的幸运女神呢
  16. 【AMD、CMD和CommonJS】
  17. 解决小米远程管理下电脑出现ftp文件错误提示
  18. 网络舆情监测与分析研判工作如何高效做好的解决方案
  19. MySQL高可用方案之PXC架构
  20. Ambari 集成LDAP技术方案

热门文章

  1. qq象棋辅助 android,QQ象棋自动下棋
  2. JSON.Stringify
  3. webstorm激活破解方法大全
  4. 在使用JEDate时间控件时,不能捕捉到input的change事件的解决办法
  5. Flash Builder4.7 破解方法
  6. 离线网页制作器(beta1.0)
  7. 【NFC】 NfcA/NfcB/NfcF/NfcV/IsoDep/Ndef/Mifare/Felica/Pboc/ISOxxxx 都是些什么鸟玩意?
  8. win10+vs2015破解VA_X
  9. dosbox使用教程
  10. 汇编软件DOSBox使用教程