GDPU 竞赛技能实践 天码行空9

1. 埃式筛法

求区间[2, n]内所有的素数对

💖 Main.java

import java.util.Scanner;

public class Main
{
	static int N = (int) 1e8, cnt = 0;
	static int[] p = new int[N];
	static boolean[] st = new boolean[N];

	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		getPrimes(n);
		print();
	}

	private static void print()
	{
		for (int i = 0; i < cnt; i++)
			System.out.print(p[i] + " ");

	}

	private static void getPrimes(int n)
	{
		for (int i = 2; i <= n && i < N; i++)
		{
			if (!st[i])
			{
				p[cnt++] = i;
				for (int j = 2; j * i <= n; j++)
					st[i * j] = true;
			}
		}
	}

}

在这里插入图片描述

2. 求第1亿个Fibonacci数

👨‍🏫 参考地址

💖 Main.java

public class Main
{
	static long n, p;

//	龟速乘法(快速积)
	static long qmul(long a, long b)
	{
		long res = 0;
		while (b != 0)
		{
			if ((b & 1) == 1)
			{
				res = (res + a) % p;
			}
			a = (a + a) % p;
			b >>= 1;
		}
		return res;
	}

//	矩阵乘法
	static void mul(long[][] a, long[][] b)
	{
//		临时矩阵暂存结果
		long[][] tmp = new long[2][2];
		for (int i = 0; i < 2; i++)
			for (int j = 0; j < 2; j++)
				for (int k = 0; k < 2; k++)
					tmp[i][j] = (tmp[i][j] + qmul(a[i][k], b[k][j])) % p;

//		拷贝
		for (int i = 0; i < 2; i++)
			for (int j = 0; j < 2; j++)
				a[i][j] = tmp[i][j];
	}

//	计算斐波那契数列的第 n 项
	static long F(long n)
	{
//		极端情况
		if (n == 0)
			return 0;

//		根据fn来进行构造矩阵
		// fn,分别为f(1) f(2)
		long[][] f = { { 1, 1 }, { 0, 0 } };
		// 累乘矩阵
		long[][] a = { { 0, 1 }, { 1, 1 } };

//      快速幂
		for (long k = n - 1; k != 0; k >>= 1)
		{
			if ((k & 1) == 1)
				mul(f, a);
			mul(a, a);
		}
		return f[0][0];
	}

	public static void main(String[] args)
	{
		n = (int) 1e8;// 10^8 == 1 亿
		p = Integer.MAX_VALUE; // 由于会爆int long 需要取模
		System.out.println("前20项:");
		for (int i = 0; i < 20; i++)
			System.out.print(F(i) + " ");
		System.out.println();
		System.out.println("第1亿项:" + F(n));
	}
}

在这里插入图片描述

3.Catalan数

即卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中的数列,以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名。现请你写一段程序来计算Catalan数。
输入样例:

5

输出样例:

42

💖 Main.java

import java.util.Scanner;

public class 卡特兰数
{

	static long cal(int n)
	{
		long son = 1;
		long mum = 1;
		for (int i = 2 * n; i > n; i--)
			son *= i;
		for (int i = n; i >= 1; i--)
			mum *= i;
		return son / (mum * (n + 1));
	}

	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		System.out.println(cal(n));
	}
}

在这里插入图片描述

4. 摆球

现将大小和形状相同的4个黑色球和4个红色球排成一排,从左边第一个球开始数,不管数几个不球,黑球数不少于红球数的排法有多少种?请编程实现。
卡特兰数的应用

💖 Main.java

public class Main
{
	static int N = 8;
	static long ans = 0;
	static long ans1 = 0;

	public static void main(String[] args)
	{
		dfs(0, 0, 0);

		System.out.println(ans + " " + cal(4));
	}

//	卡特兰数
	static long cal(int n)
	{
		long son = 1;
		long mum = 1;
		for (int i = 2 * n; i > n; i--)
			son *= i;
		for (int i = n; i >= 1; i--)
			mum *= i;
		return son / (mum * (n + 1));
	}

//	暴力枚举
	private static void dfs(int cur, int black, int red)
	{
		if (cur >= 8)
		{
			if (red == 4 && black == 4)
				ans++;
			return;
		}
		if (black > red)
			dfs(cur + 1, black, red + 1);
		dfs(cur + 1, black + 1, red);
	}

}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578693.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用grasshopper修改梁的起始点方向

一般北方向朝上的情况&#xff0c;梁的方向从南向北&#xff0c;从西向东。 现在使用grasshopper来判断起始点坐标&#xff0c;分辨是否错误。 交换起始点这个&#xff0c;我实在不会用电池操作&#xff0c;只好敲python代码实现了。代码如下&#xff1a; 如果会敲代码的同学…

66.网络游戏逆向分析与漏洞攻防-利用数据包构建角色信息-重新规划游戏分析信息的输出

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

Apache Seata的可观测实践

title: Seata的可观测实践 keywords: [Seata、分布式事务、数据一致性、微服务、可观测] description: 本文介绍Seata在可观测领域的探索和实践 author: 刘戎-Seata 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Seata简介 Seata的…

STM32单片机通过ST-Link 烧录和调试

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 1. ST-LINK V2 ST LINK v2下载器用于STM32单片机&#xff0c;可以下载程序、调试程序、读取芯片数据&#xff0c;解除芯片读写保护等等&#xff0c;辅助软件用的是STM32 ST-LINK Utility。 STM32 ST-LINK Utility…

电脑上的任务管理器不见了?如何把它打开?

前言 今天小白在睡觉的时候突然梦见回到了学校的电脑教室…… 相信大家都会有体验&#xff1a;每次上电脑课的时候&#xff0c;老师都会通过某些软件监控和控制学生的电脑。 想退出被控端的软件&#xff1f;没机会&#xff01;毕竟任务管理器也被禁用了&#xff0c;想整活都…

算法学习之单调栈

发射站 题目描述 某地有 N N N 个能量发射站排成一行&#xff0c;每个发射站 i i i 都有不相同的高度 H i H_i Hi​&#xff0c;并能向两边&#xff08;两端的发射站只能向一边&#xff09;同时发射能量值为 V i V_i Vi​ 的能量&#xff0c;发出的能量只被两边最近的且比…

Opencv_14_多边形填充与绘制

绘制多边形&#xff1a; 1&#xff09;coInvert.polyline_drawing(src); 2&#xff09;void ColorInvert::polyline_drawing(Mat& image) { Mat canvas Mat::zeros(Size(512, 512), CV_8UC3); Point p1(100, 100); Point p2(150, 100); Point p3(200…

TR6 - Transformer实战 单词预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 理论知识关于数据集 Wikitext-2 模型结构代码实现0. 环境1. 加载数据集2. 模型搭建3. 创建模型4. 单轮训练和评估的流程5. 训练 模型效果总结与心得体会 …

Openharmony - 设备异常关机Power Down问题分析

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 1.问题描述1.1出现power down的原因1.1.1硬件故障或信号1.1.2软件错误或系统崩溃2.抓日志信息2.1.抓日志方法2.2.问题初步分析3.问题排…

React复习笔记

基础语法 创建项目 借助脚手架&#xff0c;新建一个React项目(可以使用vite或者cra&#xff0c;这里使用cra) npx create-react-app 项目名 create-react-app是React脚手架的名称 启动项目 npm start 或者 yarn start src是源文件index.js相当于Vue的main.js文件。整个…

OC类与对象

OC类与对象 本篇是对上一篇的内容的继续学习。从单例模式开始继续学习 文章目录 单例模式定义应用场景特点单例模式的创建 隐藏与封装理解什么是封装目的访问控制符合成存取方法特性的指示符点语法访问属性 对象初始化便利的初始化方法 类的继承特点语法格式重写父类方法super关…

SimpleDateFormat类.Java

目录 1.1构造方法 1.2格式规则 1.3常用方法 1.4练习1&#xff08; 出生日期&#xff09; 1.5练习2(秒杀活动) java.text.SimpleDateFormat 是日期/时间格式化类&#xff0c;我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来…

机器学习理论基础—集成学习(1)

机器学习理论基础—集成学习 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务&#xff0c;有时也称为多分类系统等。 分类&#xff1a; 根据集成学习中的个体学习器的不同可以分为同质集成&#xff08;集成的学习器相同例如全部是决策树&#xff09;&#xff0c…

上市公司专利数据、专利申请、专利授权和质量指标计算面板数据(1990-2022年)

01、数据简介 专利作为企业创新能力和核心竞争力的体现&#xff0c;越来越受到上市公司的重视。了解上市公司的专利数据、专利申请、专利授权和质量指标计算&#xff0c;有助于投资者更好地评估公司的创新能力和长期发展潜力。 通过分析上市公司的专利数据、专利申请、专利授…

【国标语音对讲】EasyCVR视频汇聚平台海康/大华/宇视摄像头GB28181语音对讲配置

一、背景分析 近年来&#xff0c;国内视频监控应用发展迅猛&#xff0c;系统接入规模不断扩大&#xff0c;涌现了大量平台提供商&#xff0c;平台提供商的接入协议各不相同&#xff0c;终端制造商需要给每款终端维护提供各种不同平台的软件版本&#xff0c;造成了极大的资源浪…

[C++ QT项目实战]----系统实现双击表格某一行,表格数据不再更新,可以查看该行所有信息,选中表更新之后,数据可以继续更新

前言 在需要庞大的数据量的系统中&#xff0c;基于合适的功能对数据进行观察和使用至关重要&#xff0c;本篇在自己项目实战的基础上&#xff0c;基于C QT编程语言&#xff0c;对其中一个数据功能进行分析和代码实现&#xff0c;希望可以有所帮助。一些特殊原因&#xff0c;图片…

回溯-单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直相…

压测--混合场景设置

1、设计测试场景 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标满足需求定义的检验活动。一般有以下场景&#xff1a; 基准场景&#xff1a;单接口少量并发用户下压测&#xff0c;评估单个功能点性能。负载场景&#xff1a;逐步增…

Python实践应用|NC文件读取

import netCDF4 as nc import numpy as np import matplotlib.pyplot as plt# 打开NC文件 nc_file E:/NC_file/air.sig995.2012.nc # 将your_file.nc替换为你的NC文件路径 nc_data nc.Dataset(nc_file, r)# 查看NC文件中包含的变量 print("Variables in the NC file:&q…

免费简单好用的内网穿透工具(ngrok、natapp),微信回调地址配置

B站视频地址 文章目录 Natapp1、登录注册账号、下载软件2、使用2-1、购买隧道、查看token2-2、端口穿透 Ngrok1、登录注册账号、下载软件2、使用2-1、获取并设置 token2-2、使用 3、隧道 微信回调配置1、注册测试公众号2、回调代码3、回调配置 在一些特殊的场景下&#xff0c;需…