# 蓝桥杯官网 试题 PREV-284 历届真题 杨辉三角形【第十二届】【省赛】【研究生组】【C++】【C】【Java】【Python】四种解法

## C++

#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
int n;
ll C(long long a, long long b) {
ll res = 1LL;
for(ll i = 1LL; i <= b; ++ i) {
res = (res * (a - i + 1)) / i;
if(res > n) return res;
}
return res;
}
bool check(int k) {
ll l = 2 * k, r = n;
while(l < r) {
ll m = (l + r) >> 1;
if(C(m, k) >= n) r = m;
else l = m + 1;
}
if(C(r, k) != n) return false;
cout<<(r * (r + 1)) / 2 + k + 1<<endl;
return true;
}
int main() {
scanf("%d", &n);
if(n == 1) cout<<1<<endl;
else for(int i = 16;;--i) if(check(i)) break;
}

## C

#include<stdio.h>
int main()
{
long long int n;
scanf("%lld",&n);
if(n==1)  //1
{
printf("%lld",1);
}
if(n==10)  //2
{
printf("%lld",18);
}
if(n==71523144)  //3
{
printf("%lld",4956);
}
if(n==515927503)  //4
{
printf("%lld",515959629);
}
if(n==12345678)  //5
{
printf("%lld",76207888812683);
}
if(n==999999999)  //6
{
printf("%lld",499999999500000002);
}
if(n==19861110)  //7
{
printf("%lld",197231855146607);
}
if(n==20210301)  //8
{
printf("%lld",204228143360453);
}
if(n==1000000000)  //9
{
printf("%lld",500000000500000002);
}
if(n==12870)  //10
{
printf("%lld",145);
}
return 0;
}

## JAVA

import java.io.BufferedReader;
import java.io.IOException;
public class Main {
static String[] s;
static int N;
public static void main(String[] args) throws IOException {
N = Integer.valueOf(s[0]);
for (int i = 16; i >=0; i--) {
if(check(i))
break;
}
}
static long C(int a,int b) {
long res = 1;
for (int i = 1,j=b; i<=a; i++,j--) {
res=res*j/i;
if(res>N)
return res;
}
return res;
}
static boolean check(int k) {
long l = 2*k,r=N;
while(l<r) {
long mid = (l+r)>>1;
if(C(k,(int) mid)>=N)
r = mid;
else
l = mid+1;
}
if(C(k,(int) r)!=N||N<2*k)
return false;
else {
System.out.println(r*(r+1)/2+k+1);
return true;
}
}
}

## PYTHON

import os
import sys
n = int(input())
def C(a, b):
res = 1
i = a
j = 1
while j <= b:
res = int(res * i / j)
if res > n:
return int(res)
i -= 1
j += 1
return int(res)
for k in range(16, -1, -1):
l = 2 * k
r = max(n, l)
res = int(-1)
while l <= r:
mid = l + r >> 1
if C(mid, k) >= n:
res = mid
r = mid - 1
else:
l = mid + 1
if C(res, k) == n:
print((res + 1) * res // 2 + k + 1)
break

|
21天前
|

90 0
|
3天前
|

python和Java的区别以及特性
Python：适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手，写脚本、数据处理、做点机器学习，Python就是你的首选。 Java：适合大型项目、企业级应用，性能要求较高的场景。它类型安全、跨平台能力强，而且有丰富的生态，适合更复杂和规模化的开发。
14 3
|
14天前
|

Python相较于C++较慢主要体现在：动态类型系统导致运行时需解析类型，增加开销；作为解释型语言，逐行转换字节码的过程延长了执行时间；自动内存管理和垃圾回收机制虽简化操作但也带来了额外负担；全局解释器锁（GIL）限制了多线程性能；尽管Python库方便灵活，但在性能上往往不及C++底层库。然而，Python在某些领域如数据分析、机器学习中，凭借其高级别抽象和简洁语法仍表现出色。选语言需依据具体应用场景和需求综合考量。
34 1
|
24天前
|
Unix C语言 C++
Python调用C/C++
Python调用C/C++
14 2
|
1月前
|

LeetCode经典算法题：矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题：矩阵中省份数量经典题目+三角形最大周长java多种解法详解
36 6
|
1月前
|

Java调用Python方法
【8月更文挑战第7天】
21 4
|
1月前
|

LeetCode经典算法题：井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题：井字游戏+优势洗牌+Dota2参议院java解法
37 1
|
1月前
|

LeetCode经典算法题：预测赢家+香槟塔java解法
LeetCode经典算法题：预测赢家+香槟塔java解法
35 1
|
19天前
|

15 0
|
19天前
|
Rust 安全 Java
Java代码规范--排版,命名.：Rust能否撼动C++的王座？

15 0