news 2026/4/23 16:18:33

小红的好排列【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小红的好排列【牛客tracker 每日一题】

小红的好排列

时间限制:1秒 空间限制:256M

知识点:数论

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

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

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

输入描述:

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

输出描述:

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

示例1

输入:

2

输出:

0

说明:

在这个样例中,长度为2 22的排列有且仅有两个:

示例2

输入:

4

输出:

18

说明:

在这个样例中,一共有18 1818个长度为4 44的排列满足条件,例如:

解题思路

首先预处理阶乘和逆元阶乘(借助费马小定理快速幂求逆元),用于O ( 1 ) O(1)O(1)计算组合数;统计1 ˜ n 1 \~\ n1˜n3 33的倍数的数(及位置)个数k = n / / 3 k=n//3k=n//3,非3 33的倍数的数(及位置)个数m = n − k m=n−km=nk。好排列要求恰好n / 2 n/2n/2个位置满足a i × i a_i×iai×i3 33的倍数,推导得该条件等价于选择x = n / 2 − k x=n/2−kx=n/2k个“非3 33倍数位置”放3倍数数、同时选x xx个“3 33倍数位置”放非3 33倍数数(x < 0 x<0x<0则无合法解)。计算组合数C ( m , x ) × C ( k , x ) C(m,x)×C(k,x)C(m,x)×C(k,x),再乘以3 33倍数数的全排列f [ k ] f[k]f[k]、非3 33倍数数的全排列f [ m ] f[m]f[m],结果对1 e 9 + 7 1e9+71e9+7取模。预处理阶乘的时间复杂度O ( n ) O(n)O(n),组合数计算O ( 1 ) O(1)O(1),适配n ≤ 1 e 6 n≤1e6n1e6的规模,精准统计好排列的数量。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=1e6+10;ll f[N],inf[N];llqp(ll a,ll b){ll res=1;while(b){if(b&1)res=res*a%p;a=a*a%p;b>>=1;}returnres;}voidinit(){f[0]=1;for(ll i=1;i<N;i++)f[i]=f[i-1]*i%p;inf[N-1]=qp(f[N-1],p-2);for(ll i=N-2;i>=0;i--)inf[i]=inf[i+1]*(i+1)%p;}llC(ll n,ll k){if(k<0||k>n)return0;returnf[n]*inf[k]%p*inf[n-k]%p;}intmain(){init();ll n;if(cin>>n){ll k=n/3;ll x=n/2-k;if(x<0){cout<<0<<endl;return0;}ll ans=C(n-k,x);ans=ans*C(k,x)%p;ans=ans*f[k]%p;ans=ans*f[n-k]%p;cout<<ans<<endl;}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:52:49

电网缴费系统-开题报告

目录研究背景与意义国内外研究现状研究目标研究方法预期成果创新点技术路线进度计划参考文献项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作研究背景与意义 电网缴费系统作为电力行业信息化的重要组成部分…

作者头像 李华
网站建设 2026/4/23 11:22:24

超市管理系统 盐城工学院开题报告

目录超市管理系统开题报告概述系统开发背景与意义系统功能模块设计技术实现方案预期成果与创新点进度安排与参考文献项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作超市管理系统开题报告概述 盐城工学院的…

作者头像 李华
网站建设 2026/4/23 12:31:53

【计算机毕业设计案例】基于springboot的攀枝花市鲜花销售系统基于java+springboot+vue+mysql的攀枝花市鲜花销售系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/23 11:06:56

HTML学习笔记:超详细的 HTML 标签体系与应用指南

以下是针对 HTML 学习笔记 的超详细标签体系与应用指南&#xff08;基于 HTML5 / Living Standard 2025–2026 现状&#xff09;。 我会按功能分类组织&#xff08;参考 MDN W3C 的分组方式&#xff09;&#xff0c;而不是单纯字母顺序&#xff0c;这样更适合系统学习和实际应…

作者头像 李华
网站建设 2026/4/23 11:03:58

Product Hunt 每日热榜 | 2026-01-31

1. Leapility 标语&#xff1a;将你的重复性工作流程转变为由人工智能驱动的操作手册。 介绍&#xff1a;对于那些希望以更少的努力获得更多成果的专业人士来说&#xff0c;这里有一个解决方案。你可能已经重复做过同样的工作很多遍了&#xff0c;但在使用各种人工智能工具时…

作者头像 李华
网站建设 2026/4/23 11:03:58

这次终于选对!万众偏爱的AI论文软件 —— 千笔

你是否曾为论文选题发愁&#xff0c;反复修改却总不满意&#xff1f;是否在深夜面对空白文档无从下笔&#xff0c;又担心查重率过高&#xff1f;论文写作的每一步都充满挑战&#xff0c;尤其是对自考学生来说&#xff0c;时间紧、任务重&#xff0c;更需要高效可靠的工具。千笔…

作者头像 李华