Description

nodgd 要画一个电路图。
这是一个很简单的电路图,所有的元件都是串联关系,从整体来看就是一个环状的结构。画电路图有很多要求,nodgd 为了画得好看就又添加了一些
额外的要求。所有要求归结起来有以下几点:
1、这个环状电路上有n个双端电路元件(即每个电路元件有两个连接导线的接头),其中只有一个直流电源;为了本题方便,其他n − 1个元件都是一模一样的电阻。
2、电流在电路图中每经过一个元件,就必须拐一个90°的弯;没有经过元件时不允许拐弯。参考右图。

3、从电路图整体上观察,电流沿顺时针方向流动,且电路不能自交。参考下图。

4、如果一个符合题意的电路图,可以通过整体旋转一定的角度,再适当调整图中导线的长度,得到另外一个符合题意的电路图,则这两个电路图是相同的。参考下图。

5、如果电路环路的内部存在一个点,使得它可以“看到”电路环路内部的所有位置,就认为这个图是美观的,反之是不美观的。相同的电路图不一定都美观。参考下图。

那么问题来了,nodgd 想知道有多少种不同的电路图,以及有多少种不同的美观电路图。由于两个问题的答案都可能很大,请mod 1,000,000,007输出结果。

Input

输入文件 A.in。
输入文件第一行包含一个正整数n,表示包含电源在内的电路元件的总数量。

Output

输出文件A.out。
输出文件第一行包含一个整数,表示不同的电路图数量mod 1,000,000,007的结果。第二行包含一个整数,表示不同的美观电路图数量mod 1,000,000,007的结果。

Sample Input

【样例1】
6
【样例2&3】见下发文件

Sample Output

【样例1】
6
6

Data Constraint

对于 10%的数据,n = 12;
对于 30%的数据,n ≤ 24;
对于 60%的数据,n ≤ 5000;
对于 100%的数据,4 ≤ n ≤ 10^7,且n是个偶数。

Hint

【输入输出样例 1 说明】
可以有如下几种电路图,电路图数量是 6,所以输出文件第一行输出一个整数 6; 容易发现,这 6 个电路图都是美观的电路图,所以第二行也输出一个整数 6。

Solution

  • 结论题。

  • 有一个元件就会拐弯一次,我们发现 右拐次数就等于左拐次数+4 ,因为要顺时针拐一圈回来。

  • 所以第一问的答案即为 Cnn/2−2C_{n}^{n/2-2}Cnn/2−2​ ,即从 nnn 次拐弯中选 n/2−2n/2-2n/2−2 次左拐。

  • 第二问的话我们发现不能连续两次逆时针拐弯,不然就会形成一个不美观的凹型。

  • 所以我们把路径分成四段,可以发现每段的拐弯数都是奇数。

  • 问题转化为将 nnn 拆分成 4 个奇数的方案数(nnn 是偶数)。

  • 我们先考虑将 nnn 拆成 4 个偶数怎么做。将 n/2−1n/2-1n/2−1 个偶数排在一起(都小于 nnn)。

  • 选 3 个出来(相当于挡板),将间隔作为选择的偶数(保证了和不会超过 nnn)。

  • 于是我们就可以得出方案书为 Cn/2−13C_{n/2-1}^{3}Cn/2−13​ 。

  • 类比选 4 个奇数,我们将这四个奇数都加 1 ,则和为 n+4n+4n+4 。

  • 于是方案数为 C(n+4)/2−13=Cn/2+13C_{(n+4)/2-1}^{3}=C_{n/2+1}^{3}C(n+4)/2−13​=Cn/2+13​

  • 由于电源放在哪儿都可以,所以要乘 nnn ;

  • 又因为整体旋转后相同的电路图都是一样的,所以要除以 4 。

  • 故第二问最终答案为 Cn/2+13∗n/4C_{n/2+1}^{3}*n/4Cn/2+13​∗n/4 。

Code

#include<cstdio>
using namespace std;
typedef long long LL;
const int N=1e7+5,mo=1e9+7;
int n;
int f[N];
inline int ksm(int x,int y)
{int s=1;while(y){if(y&1) s=(LL)s*x%mo;x=(LL)x*x%mo;y>>=1;}return s;
}
inline int C(int x,int y)
{return (LL)f[x]*ksm(f[y],mo-2)%mo*ksm(f[x-y],mo-2)%mo;
}
int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);scanf("%d",&n);for(int i=f[0]=1;i<=n;i++) f[i]=(LL)f[i-1]*i%mo;printf("%d\n",C(n,n/2-2));printf("%d",(LL)C(n/2+1,3)*n%mo*ksm(4,mo-2)%mo);return 0;
}

JZOJ 5878. 【NOIP2018提高组模拟9.22】电路图 A相关推荐

  1. NOIP2018提高组模拟题(六)

    购物(shop) Description 小林来到商店中进行购物.商店里一共有 n 件物品,第 i 件物品的价格为 a[i] 元.小林总共需要购买 m 件物品,他希望他所花费的钱最少,请你计算出最小 ...

  2. NOIP2018提高组比赛总结

    NOIP2018提高组比赛总结 前言 新赛季,依旧有很多失误. 在些许的遗憾和无奈中,NOIP2018,撒花结束 纵观今年的整一场NOIP,有许多值得总结的地方 正文 NOIP2018初赛 第二次参加 ...

  3. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  4. NOIP2018提高组省一冲奖班模测训练2 T3 XYK的音游

    10月22日NOIP2018提高组省一冲奖班模测训练2 T3 XYK的音游 题目描述 XYK最近入坑了一个新音游. 游戏界面上有Ñ个并排的按键,当前这首歌有米个鼓点.游戏的玩法是在鼓点的时刻移动鼠标到 ...

  5. NOIP2018 提高组游记

    NOIP2018 提高组游记的重点不是NOIP而是游记!!! 本文分为 4 个部分: 1.关于2017, 以及自己的简介 2.noip2018游记 3.写给高一高二的学弟学妹 4.写给高三的同学和自己 ...

  6. NOIP2018提高组心路历程(AFO+自闭)

    NOIP2018提高组历程(AFO+自闭) 在不断地考试考试考试(浪浪浪)中,不知不觉,11月9号这个出征日就到来了,再出发前还是有很多小插曲的(比如刚好正面遇到她,吃好饭后还对视了一眼).随着大巴的 ...

  7. P5049 [NOIP2018 提高组] 旅行

    P5049 [NOIP2018 提高组] 旅行 题意: 一棵树(可能是基环树),从1出发,每到达一个新的点就记录下编号.求一种走法使得记录下来的编号字典序最小. 1≤n≤500000 m=n−1 或 ...

  8. 51Nod NOIP2018提高组省一冲奖班模测训练

    51Nod NOIP2018提高组省一冲奖班模测训练 NOIP2018提高组省一冲奖班模测训练1 T1 珂朵莉的旅行 T2 奈芙莲的序列 T3 奈芙莲的护符 NOIP2018提高组省一冲奖班模测训练2 ...

  9. NOIP2017提高组模拟赛4 (总结)

    NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...

最新文章

  1. Java并发编程71道面试题及答案
  2. oracle rac scan ip 用途 原理
  3. 【second】Flatten Binary Tree to Linked List
  4. php从头部添加,php如何向header头添加Authorization信息?
  5. delphi 解析一维条码_科普帖:一般商用条码扫描器全知道,只需三把枪
  6. Ubuntu安装Oracle手册(简单版)
  7. 冒泡排序时间复杂度计算和优化
  8. 计算机网络基础(一)
  9. 《Adams/ view从入门到提高》视频 —— ftc正青春
  10. 如何下载安装fireBug
  11. Java通过选择城市来计算运费(基础程序)
  12. java获取每月最后一天
  13. Linux man帮助文档
  14. iOS打包错误The operation couldn’t be completed. (AppThinning.StubError error 1.)
  15. 2020 第三届江西省高校网络安全技能大赛 线上赛Writeup
  16. vue使用lodop.js实现前端标签打印
  17. eclipse配置glassfish插件和密码
  18. 无线能量传输(WPT)中收发线圈的等效电路模型
  19. 技术问题收集整理汇总——持续更新中...
  20. 技术学院技能发展网络在线技能培训在线技能Rtaj比赛进行到一乔

热门文章

  1. 吴恩达 coursera AI 第一课总结+作业答案
  2. 随机信号通过带通滤波器
  3. 科大星云诗社动态20210309
  4. [云炬python3玩转机器学习笔记] 2-5机器学习相关的哲学思考
  5. [C++调试笔记]Main函数声明变量
  6. GitHub 新手详细教程转载,亲测可用
  7. GitHub 中文排行榜,高分优秀中文项目一网打尽!
  8. 中学计算机科学教育,计算机科学教育周 – Tsinghua International School 清华大学附属中学国际部...
  9. python pandas csv时间聚合_Python通过pandas操作excel常用功能
  10. Js提交表单的两种方法