当前位置:网站首页>LeetCode 1175. 质数排列(质数判断+组合数学)
LeetCode 1175. 质数排列(质数判断+组合数学)
2022-07-02 05:01:00 【xylitolz】
0 题目
1 解题思路
1.1 质数判断+组合数学
本 题 总 的 方 案 数 = 「 所 有 质 数 都 放 在 质 数 索 引 上 的 方 案 数 」 × 「 所 有 合 数 都 放 在 合 数 索 引 上 的 方 案 数 」 本题总的方案数=「所有质数都放在质数索引上的方案数」\times \\ 「所有合数都放在合数索引上的方案数」 本题总的方案数=「所有质数都放在质数索引上的方案数」×「所有合数都放在合数索引上的方案数」
「所有质数都放在质数索引上的方案数」:
- 首先求出 [ 1 , n ] [1,n] [1,n]范围内所有质数的个数 p r i m e N u m primeNum primeNum
- 枚举100以内所有质数+二分
- 试除法
- 再求出质数个数 primeNum \textit{primeNum} primeNum 的阶乘即为方案数
「所有合数都放在合数索引上的方案数」:
- n − p r i m e N u m n - primeNum n−primeNum即为所有合数的个数,再求其阶乘即为方案数
排列:
A ( m , n ) = n ! ( n − m ) ! A(m, n) = \frac{n!}{(n - m)!} A(m,n)=(n−m)!n!组合:
C ( m , n ) = n ! m ! × ( n − m ) ! C(m, n) = \frac{n!}{m! \times (n - m)!} C(m,n)=m!×(n−m)!n!
1.1.1 代码实现
1.1.1.1 枚举100以内所有质数+二分
class Solution {
// 枚举100以内所有质数
private static int[] PRIME = {
2, 3, 5, 7,
11, 13, 17, 19,
23, 29,
31, 37,
41, 43, 47,
53, 59,
61, 67,
71, 73, 79,
83, 89,
97};
private static final int MOD = 1000000007;
public int numPrimeArrangements(int n) {
// 利用二分求取质数个数
int primeNum = binarySearch(n) + 1;
// 利用阶乘求方案数
return (int) (calcFactorial(primeNum) * calcFactorial(n - primeNum) % MOD) ;
}
private long calcFactorial(int m) {
long res = 1;
while (m != 0) {
res *= m;
res %= MOD;
m--;
}
return res;
}
private int binarySearch(int n) {
int left = 0, right = PRIME.length - 1;
while (left < right) {
int mid = left + (right - left + 1) / 2;
if (PRIME[mid] > n) {
right = mid - 1;
} else {
left = mid;
}
}
return left;
}
}
1.1.1.2 试除法
class Solution {
private static final int MOD = 1000000007;
public int numPrimeArrangements(int n) {
// 试除法求取质数个数
int primeNum = 0;
for (int i = 1; i <= n; i++) {
if (isPrime(i)) {
primeNum++;
}
}
// 利用阶乘求方案数
return (int) (calcFactorial(primeNum) * calcFactorial(n - primeNum) % MOD);
}
public boolean isPrime(int n) {
if (n == 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
public long calcFactorial(int n) {
long res = 1;
for (int i = 1; i <= n; i++) {
res *= i;
res %= MOD;
}
return res;
}
}
2 Reference
边栏推荐
- List of common bugs in software testing
- What data does the main account of Zhengda Meiou 4 pay attention to?
- The underlying principle of go map (storage and capacity expansion)
- Record the bug of unity 2020.3.31f1 once
- Geotrust OV Multi - Domain Domain SSL Certificate rmb2100 per year contains several Domain names?
- How to configure PostgreSQL 12.9 to allow remote connections
- Map in JS (including leetcode examples)
- MySQL table insert Chinese change? Solution to the problem of No
- 2022-003arts: recursive routine of binary tree
- Express logistics quick query method, set the unsigned doc No. to refresh and query automatically
猜你喜欢
How to recover deleted data in disk
Practical problem solving ability of steam Education
06 decorator mode
DC-1靶场搭建及渗透实战详细过程(DC靶场系列)
[Yu Yue education] autumn 2021 reference materials of Tongji University
Go Chan's underlying principles
2022 Alibaba global mathematics competition, question 4, huhushengwei (blind box problem, truck problem) solution ideas
List of common bugs in software testing
10 minute quick start UI automation ----- puppeter
win10 磁盘管理 压缩卷 无法启动问题
随机推荐
國產全中文-自動化測試軟件Apifox
Case sharing | intelligent Western Airport
LM09丨费雪逆变换反转网格策略
Detailed process of DC-1 range construction and penetration practice (DC range Series)
C# 图片显示占用问题
2022 Alibaba global mathematics competition, question 4, huhushengwei (blind box problem, truck problem) solution ideas
Analyzing the hands-on building tutorial in children's programming
About PROFIBUS: communication backbone network of production plant
Pytest learning ----- pytest Interface Association framework encapsulation of interface automation testing
Exercise notes 13 (effective letter ectopic words)
TypeScript函数详解
数学知识(欧拉函数)
Common errors of dmrman offline backup
奠定少儿编程成为基础学科的原理
关于Steam 教育的知识整理
Lay the foundation for children's programming to become a basic discipline
DC-1靶场搭建及渗透实战详细过程(DC靶场系列)
How to configure PostgreSQL 12.9 to allow remote connections
Acelems Expressway microgrid energy efficiency management platform and intelligent lighting solution intelligent lighting tunnel
Typescript function details