当前位置: 首页 > news >正文

HJ143 小红的好排列

  • 题目
  • 题解(18)
  • 讨论(8)
  • 排行

较难 通过率:29.30% 时间限制:1秒 空间限制:256M

知识点数论

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

小红认为一个偶数长度为 nn 的排列{a1,a2,…,an}{a1​,a2​,…,an​} 是好排列,当且仅当恰好有一半的 ii 使得 ai×iai​×i 是 33 的倍数。
小红想知道,全部长度为 nn 的排列中,共有多少个好排列?由于答案可能很大,请将答案对 (109+7)(109+7) 取模后输出。

长度为 nn 的排列是由 1∼n1∼n 这 nn 个整数、按任意顺序组成的数组,其中每个整数恰好出现一次。例如,{2,3,1,5,4}{2,3,1,5,4} 是一个长度为 55 的排列,而 {1,2,2}{1,2,2} 和 {1,3,4}{1,3,4} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述:

在一行上输入一个正偶数 n(2≦n≦106)n(2≦n≦106) 代表排列中的元素数量。

输出描述:

输出一个整数,代表好排列的数量。由于答案可能很大,请将答案对 (109+7)(109+7) 取模后输出。

示例1

输入:

2

复制输出:

0

复制说明:

在这个样例中,长度为 22 的排列有且仅有两个: ∙ ∙{1,2}{1,2},第一个元素 11 使得 1×1=11×1=1,第二个元素 22 使得 2×2=42×2=4,均不是 33 的倍数; ∙ ∙{2,1}{2,1},同理。 因此,长度为 22 的排列中,不存在好排列。

示例2

输入:

4

复制输出:

18

复制说明:

在这个样例中,一共有 1818 个长度为 44 的排列满足条件,例如: ∙ ∙{1,2,4,3}{1,2,4,3},第一个元素 11 使得 1×1=11×1=1,第二个元素 22 使得 2×2=42×2=4,第三个元素 44 使得 4×3=124×3=12,第四个元素 33 使得 3×4=123×4=12,恰好有一半的 ii 使得 ai×iai​×i 是 33 的倍数。
#include <bits/stdc++.h> #define x first #define y second using namespace std; typedef long long LL; typedef pair<int, int> PII; const int N = 1e6 + 10, MOD = 1e9 + 7; const LL INF = 1e18; int n; LL fact[N], infact[N]; LL q_pow(LL a, LL b) { a %= MOD; LL ans = 1; while (b) { if (b & 1) ans = ans * a % MOD; a = a * a % MOD; b >>= 1; } return ans; } void init() { infact[0] = fact[0] = 1; for (int i = 1; i < N; ++i) { fact[i] = fact[i - 1] * i % MOD; infact[i] = q_pow(fact[i], MOD - 2); } } LL C(LL a, LL b) { if (a < b || b < 0) return 0; return fact[a] * infact[a - b] % MOD * infact[b] % MOD; } int main() { ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); init(); cin >> n; int m = n / 3; int k = 2 * m - n / 2; if (k < 0 || k > m) { cout << 0 << '\n'; return 0; } LL ans = C(m, k) * C(n - m, m - k) % MOD * fact[m] % MOD * fact[n - m] % MOD; cout << ans << '\n'; return 0; }
http://www.jsqmd.com/news/529784/

相关文章:

  • m4s格式转换工具终极指南:如何将B站缓存视频永久保存为MP4?
  • Linux 调度器中的完成量:completion.c 的线程同步逻辑
  • 功能上下文划分与测试替身选择策略
  • BilibiliDown高效下载指南:3个核心技巧实现B站视频批量下载
  • Java基础部分面试题(2026最新)
  • CLion+Qt6实战:从零搭建学生信息管理系统与团队Git协作
  • Django REST Framework全面解析与实战指南:构建企业级API的架构与实践
  • BilibiliDown:如何轻松获取B站高清视频与音频的完整解决方案
  • 测试工序:让架构设计真正落地的关键机制
  • Spark vs Hadoop终极对决:内存计算如何帮你省下50%集群成本?
  • Escape From Tarkov训练器终极指南:离线模式下的智能游戏辅助深度解析
  • Xinference-v1.17.1在嵌入式Linux中的轻量化部署
  • 数据结构:哈希表的原理与 C++ 数组模拟实现
  • 遥感小白也能懂:Git-RSCLIP提示词从入门到精通
  • Adafruit GFX图形库深度实战指南:从原理到优化的嵌入式显示解决方案
  • 15分钟搞定黑苹果:OpCore-Simplify智能配置终极指南
  • 数据结构:C++ STL:set 与 map 的核心用法
  • MOS管与三极管的驱动特性对比及选型指南
  • LongAdder为什么那么快?
  • Qwen3-ASR-1.7B多语言落地:一带一路项目多语种会议纪要生成
  • LeetCode 152题别再用暴力了!一个动画看懂动态规划如何搞定乘积最大子数组
  • 造相 Z-Image 应用场景落地:AI绘画教学、提示词工程测试与安全批量预览
  • 2026年 桁架机械手厂家实力推荐榜:重载/上下料/龙门/三轴/码垛/搬运全系列,机械人地轨焊接/码垛/搬运精选,技术领先与高效稳定之选 - 品牌企业推荐师(官方)
  • 实战指南:如何用RoBERTa+TextCNN搭建高精度意图识别模型(附完整代码)
  • 究极智能体·唯道可驭·唯心可掌
  • uWSGI部署深度学习模型报错:共享库映射失败的深度解析与解决方案
  • ComfyUI实战体验:用可视化节点快速生成高质量AI绘画作品
  • 20254118于欣灵实验一《Python程序设计》实验报告
  • 5个革新性功能:WebLaTex的学术写作效率提升方案
  • ControlNet-v1-1_fp16技术指南:跨版本兼容与高效部署全攻略