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

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

为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来。希望能对大家的成绩有所帮助。


今年的最大目标就是能为【一亿技术人】创造更高的价值。


资源限制


内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s


image.png


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;
import java.io.InputStreamReader;
public class Main {
  static String[] s;
  static int N;
  public static void main(String[] args) throws IOException {
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  s = in.readLine().split(" ");
  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天前
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
90 0
|
3天前
|
机器学习/深度学习 人工智能 安全
python和Java的区别以及特性
Python:适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手,写脚本、数据处理、做点机器学习,Python就是你的首选。 Java:适合大型项目、企业级应用,性能要求较高的场景。它类型安全、跨平台能力强,而且有丰富的生态,适合更复杂和规模化的开发。
14 3
WK
|
14天前
|
机器学习/深度学习 Java 程序员
为什么Python比C++慢很多?
Python相较于C++较慢主要体现在:动态类型系统导致运行时需解析类型,增加开销;作为解释型语言,逐行转换字节码的过程延长了执行时间;自动内存管理和垃圾回收机制虽简化操作但也带来了额外负担;全局解释器锁(GIL)限制了多线程性能;尽管Python库方便灵活,但在性能上往往不及C++底层库。然而,Python在某些领域如数据分析、机器学习中,凭借其高级别抽象和简洁语法仍表现出色。选语言需依据具体应用场景和需求综合考量。
WK
34 1
|
24天前
|
Unix C语言 C++
Python调用C/C++
Python调用C/C++
14 2
|
1月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
36 6
|
1月前
|
机器学习/深度学习 算法 Java
Java调用Python方法
【8月更文挑战第7天】
|
1月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
37 1
|
1月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
35 1
|
19天前
|
搜索推荐 JavaScript 前端开发
简单实用,Python代码调试利器/java代码的设计和解读
尽管有许多高级调试工具,但在多数情况下,`print()`仍是便捷之选。`icecream`库则将`print()`调试法发挥到极致,简化变量检查与信息输出,提升调试效率。无论是基本变量还是复杂数据结构,`icecream`都能轻松应对,并支持自定义输出格式,让你的调试工作更高效。下面,让我们一起探索`icecream`的更多实用功能吧!
15 0
|
19天前
|
Rust 安全 Java
Java代码规范--排版,命名.:Rust能否撼动C++的王座?
系统编程是计算机科学的核心,C++长期占据主导地位,但其内存安全问题备受诟病。Rust以安全性为核心,通过所有权和生命周期概念避免了野指针和内存泄漏。此外,Rust的并发模型和日益丰富的生态系统使其成为现代系统编程的新选择,尤其在安全性和并发性方面表现出色。尽管C++依然强大,但Rust为开发者提供了更安全、易管理的选项,未来有望推动更多系统级应用的发展。
15 0