news 2026/4/3 4:13:23

小红的好排列【牛客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/3/29 14:31:17

学长亲荐 9 个降AIGC网站 千笔·专业降AI率智能体解决论文AI痕迹

AI降重工具&#xff1a;让论文更自然&#xff0c;让学术更纯粹 在如今的学术环境中&#xff0c;越来越多的研究生开始关注论文中的AIGC率和查重率问题。随着AI技术的广泛应用&#xff0c;许多学生在写作过程中会借助AI工具进行内容生成&#xff0c;但随之而来的就是论文中可能存…

作者头像 李华
网站建设 2026/4/1 6:15:22

短视频分享网站的设计与实现 (开题报告)

目录 研究背景与意义核心功能模块技术选型建议关键挑战与解决方案预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 研究背景与意义 短视频分享网站是当前互联网热门应用方向&#xff0c;具有用户…

作者头像 李华
网站建设 2026/3/25 18:13:37

看完就会:9个AI论文工具测评!本科生毕业论文写作全攻略

在当前高校学术环境中&#xff0c;论文写作已成为本科生毕业的必经之路&#xff0c;但面对选题困难、文献检索繁琐、格式规范不熟等问题&#xff0c;许多学生感到力不从心。随着AI技术的不断进步&#xff0c;各类论文辅助工具层出不穷&#xff0c;如何选择真正适合自己的工具成…

作者头像 李华
网站建设 2026/4/3 1:14:06

全网最全8个降AIGC工具 千笔AI帮你轻松降AI率

AI降重工具&#xff1a;让论文更自然&#xff0c;更安全 随着AI技术的普及&#xff0c;越来越多的学生在撰写论文时会借助AI工具来提高效率。然而&#xff0c;随之而来的AIGC率过高、查重率超标等问题也成为了困扰许多学生的重要难题。如何在保证内容质量的前提下&#xff0c;有…

作者头像 李华