ZOJ 3688
做出这题,小有成就感
本来已打算要用那个禁位的排列公式,可是,问题在于,每个阶乘前的系数r的求法是一个难点。
随便翻了翻那本美国教材《组合数学》,在容斥原理一章的习题里竟有一道类似,虽然并无答案,但他的注意倒是提醒了我。不妨把那2*n个位置看成排成一个圆周的一列,从中选出k个不相邻的数的组合数。不过,经我验证,他上面的那道公式是错的,应该把n改成2*n才对。哈哈,问题就这样解决了。
在计组合数时,不妨使用全排列的公式,又由于100.。。0007是一个质数,所以可以使用费马小定理在处理各个阶乘除法时求得逆元。
解决。
#include <iostream>
#include <cstdio>
#include <algorithm>
#define MOD 1000000007
#define N 200005
using namespace std; typedef long long LL; LL f[N]; void initial(){
f[0]=1;
for(LL i=1;i<N;i++)
f[i]=(f[i-1]*i)%MOD;
} LL quick(LL p,LL r){
LL ans=1;
while(r){
if(r&1)
ans=(ans*p)%MOD;
r>>=1;
p=(p*p)%MOD;
}
return ans;
} int main(){
initial();
int n;
while(scanf("%d",&n)!=EOF){
if(n<3){
printf("0\n");
continue;
}
LL ans=f[n];
int s=2*n;
for(int i=1;i<=n;i++){
LL uper=((LL)s*f[s-i-1])%MOD;
LL down=(f[s-2*i]*f[i])%MOD;
down=quick(down,MOD-2);
LL res=(((uper*down)%MOD)*f[n-i])%MOD;
if(i&1){
ans=((ans-res)%MOD+MOD)%MOD;
}
else ans=((ans+res)%MOD+MOD)%MOD;
}
printf("%lld\n",ans);
}
return 0;
}
ZOJ 3688的更多相关文章
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1392 The Hardest Problem Ever
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...
- ZOJ Problem Set - 1049 I Think I Need a Houseboat
这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...
- ZOJ Problem Set - 1006 Do the Untwist
今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...
- ZOJ Problem Set - 1001 A + B Problem
ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...
- zoj 1788 Quad Trees
zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...
- ZOJ 1958. Friends
题目链接: ZOJ 1958. Friends 题目简介: (1)题目中的集合由 A-Z 的大写字母组成,例如 "{ABC}" 的字符串表示 A,B,C 组成的集合. (2)用运算 ...
随机推荐
- [SharePoint][SharePoint 2013从入门到精通]Chapter 1 介绍 SharePoint2013
本章你讲学到 什么是SharePoint2013 SharePoint2013如何加强协作与共享 SharePoint2013中有什么用户权限 什么是SharePoint Online 本地部署与在线 ...
- HDU 2732 Leapin' Lizards(拆点+最大流)
HDU 2732 Leapin' Lizards 题目链接 题意:有一些蜥蜴在一个迷宫里面,有一个跳跃力表示能跳到多远的柱子,然后每根柱子最多被跳一定次数,求这些蜥蜴还有多少是不管怎样都逃不出来的. ...
- 【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转、缩放具体解释
本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行解说,主要通过MFC单文档视图实现显示BMP图片空间几何变换.包含图像平移.图形 ...
- 南邮JAVA程序设计实验1 综合图形界面程序设计
南邮JAVA程序设计实验1 综合图形界面程序设计 实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. ...
- Hive权限之改进
不足 即使开启hive权限认证的情况下,不论什么用户仍然是超级用户.能够通过grant给不论什么人赋予不论什么权限,这样权限认证基本没有意义.因此必须在开启权限认证的同一时候.对运行grant/rev ...
- HDU 1269 -- 迷宫城堡【有向图求SCC的数目 && 模板】
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- poj - 1159 - Palindrome(滚动数组dp)
题意:一个长为N的字符串( 3 <= N <= 5000).问最少插入多少个字符使其变成回文串. 题目链接:http://poj.org/problem?id=1159 -->> ...
- 2016.02.25,英语,《Vocabulary Builder》Unit 02
ag:来自拉丁语do.go.lead.drive,an agenda是要做事情的清单,an agent是代表他们做事的人,同时也是为他人做事的机构.拉丁语litigare包括词根lit,即lawsui ...
- Web前端必须规避的8个误区
现在,有越来越多所谓的“教程”来帮助我们提高网站的易用性.下面收集了一些在Web开发中容易出错和被忽略的小问题,并且提供了参考的解决方案,以便于帮助Web开发者更好的完善网站. 通过避免下面这些小错误 ...
- Activity禁止截屏代码
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);