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<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mo 1000000007
ll 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);
}

jzoj5878的更多相关文章

随机推荐

  1. layui学习<一>

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  2. IE8不支持数组的indexOf方法 如何解决

    转自:http://www.jbxue.com/article/8367.html 原因分析: 这是一个js bug, 在IE8下,js数组没有indexOf方法,会报错:而在其它浏览器下(Firef ...

  3. Spring AOP配置

    相关概念有点拗口,我这里简单总结一个,切面,决定做什么,写处理逻辑,比如打日志.切入点,决定在哪些方里拦截,一般填正则表达式查询. 通知,就是连接切面和切入点的桥梁. 其中遇到了配置好,启动服务器没报 ...

  4. PTA第五次作业

    #include<stdio.h> #include<math.h> int main () { int n,m,i,j,a; scanf("%d",&am ...

  5. 支持向量机(SVM)算法

    支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计 ...

  6. 使用Jsoup获取网页内容超时设置

    使用Jsoup获取网页内容超时设置 最近使用Jsoup来抓取网页,并对网页进行解析,发现很好用.在抓取过程中遇到一个问题,有些页面总是报Timeout异常,开始想是不是被抓取网站对IP进行了限制,后来 ...

  7. 2018.08.10 atcoder No Need(线性dp)

    传送门 输入一个序列an" role="presentation" style="position: relative;">anan,输入k&q ...

  8. Ubuntu 16.04安装MySQL及遇到的问题解决方案

    使用以下命令即可进行MySQL安装: sudo apt-get install mysql-server 上述命令会安装以下包: apparmor mysql-client-5.7 mysql-com ...

  9. joint python文件拼接

    # -*- coding:utf-8 -*- import os import re p1=r"([0-9][0-9][AB])\.\w{3}$" p2=r"^.+\,( ...

  10. Eclipse中显示line number