蓝桥杯每日一题2023.10.3

杨辉三角形 - 蓝桥云课 (lanqiao.cn)

题目描述

题目分析

40分写法:

可以自己手动构造一个杨辉三角,然后进行循环,用cnt记录下循环数的个数,看哪个数与要找的数一样,输出cnt

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N = 2e3 + 10;
int a[N][N], x, cnt; 
int main()
{
	a[1][1] = 1;
	for(int i = 2; i <= 1000; i ++)
	{
		for(int j = 1; j <= i; j ++)
		{
			a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
		}
	}
	cin >> x;
	for(int i = 1; i <= 1000; i ++)
	{
		for(int j = 1; j <= i; j ++)
		{
			cnt ++;
			if(a[i][j] == x)
			{
				cout << cnt << '\n';
				return 0;
			}
		}
	}
	return 0;
}

50分写法:找规律(假定在第二列出现)

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
int main()
{
	cin >> n;
	cout << n * (n + 1) / 2 + 2;
	return 0;
}
/*
1	3	1 + 2
2	5	3 + 2
3	8	6 + 2
4	12 	10 + 2
5	17	15 + 2
...
n	n * (n + 1) + 2
*/

80分写法:上面两个结合

满分写法:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
ll c(int a, int b)//组合数
{
	ll res = 1;
	for(int i = b, j = 1; j <= a; j ++, i --)
	{
		res = res * i / j;
	}
	return res;

}
bool check(ll k)//找在k行的哪个数
{
	ll l = 2 * k, r = max(2 * k, n);
	while(l < r)
	{
		ll mid = l + r >> 1;
		if(c(k, mid) >= n)r = mid;
		else l = mid  + 1;
	}
	if(c(k, r) != n)return false;
	cout << r * (r + 1) / 2 + k + 1;
}
int main()
{
	cin >> n;
	int k = 16;
	while(true)
	{
		if(check(k))break;
		k --;
	}
	return 0;
}
相关推荐
嵌入式阿蔡2 小时前
面试高频考点 01:volatile / 中断 / 堆栈 八股精讲
java·面试·职场和发展·嵌入式实时数据库
城管不管13 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
重生之后端学习16 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
ITmaster073119 小时前
天天 AI Coding 的你,如果出去面试,你的竞争力是什么?
人工智能·面试·职场和发展
HY小宝F20 小时前
树莓派 FFmpeg 实战笔记(二):命令行、源码编译与硬件编码的真相
学习·职场和发展·ffmpeg
程序员三藏21 小时前
浅谈性能测试
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·性能测试
2601_967264281 天前
React教程全家桶实战redux+antd+React Hooks前端js视频,2025徐老师React18&19课程含项目实战(完结)
职场和发展
鹿角片ljp2 天前
LeetCode 46. 全排列|吃透回溯
算法·leetcode·职场和发展
程序员三藏2 天前
Python+requests实现接口自动化测试
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
.道阻且长.2 天前
11.LeetCode算法习题讲解--滑动窗口--将x减到0的最小操作数
算法·leetcode·职场和发展