当前位置:网站首页>【1175. 质数排列】
【1175. 质数排列】
2022-06-30 19:13:00 【Sugar_wolf】
来源:力扣(LeetCode)
描述:
请你帮忙给从 1 到 n 的数设计排列方案,使得所有的「质数」都应该被放在「质数索引」(索引从 1 开始)上;你需要返回可能的方案总数。
让我们一起来回顾一下「质数」:质数一定是大于 1 的,并且不能用两个小于它的正整数的乘积来表示。
由于答案可能会很大,所以请你返回答案 模 mod 10^9 + 7 之后的结果即可。
示例 1:
输入:n = 5
输出:12
解释:举个例子,[1,2,5,4,3] 是一个有效的排列,但 [5,2,3,4,1] 不是,因为在第二种情况里质数 5 被错误地放在索引为 1 的位置上。
示例 2:
输入:n = 100
输出:682289015
提示:
1 <= n <= 100
方法 : 质数判断 + 组合数学
思路
求符合条件的方案数,使得所有质数都放在质数索引上,所有合数放在合数索引上,质数放置和合数放置是相互独立的,总的方案数即为「所有质数都放在质数索引上的方案数」 ×「所有合数都放在合数索引上的方案数」。求「所有质数都放在质数索引上的方案数」,即求质数个数 numPrimes 的阶乘。「所有合数都放在合数索引上的方案数」同理。求质数个数时,可以使用试除法。
代码:
const int MOD = 1e9 + 7;
class Solution {
public:
int numPrimeArrangements(int n) {
int numPrimes = 0;
for (int i = 1; i <= n; i++) {
if (isPrime(i)) {
numPrimes++;
}
}
return (int) (factorial(numPrimes) * factorial(n - numPrimes) % MOD);
}
bool isPrime(int n) {
if (n == 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
long factorial(int n) {
long res = 1;
for (int i = 1; i <= n; i++) {
res *= i;
res %= MOD;
}
return res;
}
};
执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:5.9 MB, 在所有 C++ 提交中击败了45.81%的用户
author:LeetCode-Solution
边栏推荐
- SSM整合流程(整合配置、功能模块开发、接口测试)
- 数据智能——DTCC2022!中国数据库技术大会即将开幕
- 成长一夏 挑战赛来袭 专属社区福利来袭~免费获得CSDN定制T恤衫
- 今早,投资人开始集体出差
- Is it safe to open an account for mobile phone stock trading!?
- 条件编译
- 在广州的朋友,有机会可以参加下
- Understanding of event queue, micro task and macro task and interview questions
- 事件队列、微任务与宏任务的理解和面试题
- Tencent conference application market was officially launched, with more than 20 applications in the first batch
猜你喜欢

线下门店为什么要做新零售?

【NLP】【TextCNN】 文本分类

Audio and video architecture construction in the super video era | science and Intel jointly launched the second season of "architect growth plan"

2022 最新 JCR正式发布全球最新影响因子名单(前600名)

Idle fish is hard to turn over

无线充U型超声波电动牙刷方案开发

Buttons to achieve various effects and functions. Reading this article is enough

“更福特、更中国”拨云见日,长安福特王牌产品订单过万

台湾SSS鑫创SSS1700替代Cmedia CM6533 24bit 96KHZ USB音频编解码芯片

VR全景拍摄为什么要加盟?巧借资源实现共赢
随机推荐
Audio and video architecture construction in the super video era | science and Intel jointly launched the second season of "architect growth plan"
Warmup预热学习率「建议收藏」
S7-1500 PLC之间进行TCP通信的具体方法和步骤详解(图文)
DELL R720服务器安装网卡Broadcom 5720驱动
今早,投资人开始集体出差
2022年高考都结束了,还有人真觉得程序员下班后不需要学习吗?
RP原型资源分享-购物类App
1. 爬虫之Beautifulsoup解析库&在线解析图片验证码
Kubernetes为什么会赢,容器圈的风云变幻!
笔记软件的历史、选择策略以及深度评测
Why do more and more people choose cloud rendering?
软件工程最佳实践——项目需求分析
JVM FAQs
MySQL数据库查询优化
Lombok
pycharm有用快捷键
Task04:集合运算-表的加减法和join等--天池龙珠计划SQL训练营学习笔记
成长一夏 挑战赛来袭 专属社区福利来袭~免费获得CSDN定制T恤衫
连接实验室服务器
Application of VoIP push in overseas audio and video services
