博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jzoj5878
阅读量:5171 次
发布时间:2019-06-13

本文共 829 字,大约阅读时间需要 2 分钟。

tj:這道題可以想到排列組合

對於第一問,我們知道,左轉的次數比右轉次數多4,所以答案是c(n,n/2-2)
對於第二問,我們發現,不能出現下凹的情況,所以不能同時出現2個左拐,且路徑可以分為4段,且每一段長度為奇數,問題轉化成n個數拆成4個奇數的情況
先考慮拆成4個偶數,那麼等價于將n/2拆成任意個大於0的數,使用隔板法,有n/2-1個空位和3個板,答案為c(n/2-1,3)
然後,奇數也類似,把每一個數加上1變成偶數,套上原來公式變為c(n/2+1,3)
由於每一個電源可以放在任何一個位置,所以答案要乘n,由於旋轉4次結果相同,所以答案要除4

#include
using namespace std;typedef long long ll;#define mo 1000000007ll jc[10000010],ijc[10000010],n;ll qp(ll x,ll y){ if(!y)return 1; if(y==1)return x%mo; ll r=qp(x,y>>1); if(y&1)return r*r%mo*x%mo; return r*r%mo;}ll c(ll x,ll y){ return jc[x]*qp(jc[x-y],mo-2)%mo*qp(jc[y],mo-2)%mo;}int main(){ freopen("a.in","r",stdin); freopen("a.out","w",stdout); scanf("%lld",&n); jc[0]=1; for(ll i=1;i<=n;i++) jc[i]=jc[i-1]*i%mo; printf("%lld\n%lld",c(n,n/2-2),c(n/2+1,3)*n%mo*qp(4,mo-2)%mo);}

转载于:https://www.cnblogs.com/rilisoft/p/10385264.html

你可能感兴趣的文章
golang调用c++的dll库文件
查看>>
知识点篇:7)企业标准体系制定要求
查看>>
php’s explode() 函数
查看>>
Spring AOP的实现思想之动态代理
查看>>
VSCode设置中文语言
查看>>
Kafka 几个实现细节
查看>>
UWP学习目录整理
查看>>
Centos7-安装Gradle4.10
查看>>
四则运算1
查看>>
Web API框架学习——消息管道(二)
查看>>
【转】请求处理机制其二:Django中间件的解析
查看>>
如何让Div层悬浮在Flash Object对象之上(转载)
查看>>
Visual Studio Code compile error - launch.json must be configured...
查看>>
【算法竞赛-入门经典】计算并输出1+2的值
查看>>
我们应该顶住压力
查看>>
对于大流量的网站,您采用什么样的方法来解决访问量问题?
查看>>
PCIE设备与HOST之间的地址转换
查看>>
Ambari 安装配置 MySql
查看>>
linux下工具exfs用法
查看>>
呼吸灯演示
查看>>