hdu 5698 瞬间移动(排列组合)
这题刚看完,想了想,没思路,就题解了 = =
但不得不说,找到这个题解真的很强大,链接:http://blog.csdn.net/qwb492859377/article/details/51478117
这个我只是看了他的思路,之后代码就自己写,之后交上去就是1A,我感觉好的题解就应该是这样的,Orz
要先看下他的思路,现在我在补充些我的理解: 首先,你要把行,列分开看,先说行,从1到n,1和n都不能走,因为1是开始,n是确定的,所以你有n-2种选择,你可以枚举x从1到n-2,就相当于高中学的,在n-2个箱子中放x个相同小球,有几种情况? 同理,列也是,但注意在同一个x时他们还要相乘,这很明显,因为不可能相加。
最后ans还要加1,因为从1,1直接到n,m的这种情况还没算。还有就是算C(n,k)了,这就是套模板了,没什么说的。
#include <bits/stdc++.h>
using namespace std; const int INF=0x3f3f3f3f;
typedef long long ll;
#define PI(A) printf("%d\n",A)
#define SI(N) scanf("%d",&(N))
#define SII(N,M) scanf("%d%d",&(N),&(M))
#define cle(a,val) memset(a,(val),sizeof(a))
#define rep(i,b) for(int i=0;i<(b);i++)
#define Rep(i,a,b) for(int i=(a);i<=(b);i++)
#define reRep(i,a,b) for(int i=(a);i>=(b);i--)
const double EPS= 1e- ; /* ///////////////////////// C o d i n g S p a c e ///////////////////////// */ const int MAXN= + ;
const int MOD=1e9+ ;
ll jiech[MAXN];//求阶乘取完模的数组 int N,M; //快速幂模板
ll mod_pow(ll x,ll n,ll mod)
{
ll res=;
while(n>){
if (n&) res=res*x%mod;
x=x*x%mod;
n>>=;
}
return res;
} //求C(n,k)的函数 (n在C下面,k在C上面)
//限制:MOD必须是质数,因为是用费马小定理求的
ll C(int n,int k)
{
ll d=(jiech[k]*jiech[n-k])%MOD;
return (jiech[n]*mod_pow(d,MOD-,MOD))%MOD;
} int main()
{
//先打表阶乘取模数组
jiech[]=jiech[]=;
for (int i=;i<MAXN;i++)
{
jiech[i]=(jiech[i-]*i)%MOD;
} while(~SII(N,M))
{ int k=min(N,M);
int k2=max(N,M);
ll ans=;
//要根据小的那个循环
for (int i=;i<=k-;i++)
{
ans+=C(k-,i)*C(k2-,i);
ans%=MOD;
}
printf("%lld\n",ans+);
} return ;
}
hdu 5698 瞬间移动(排列组合)的更多相关文章
- hdu 4451 Dressing 排列组合/水题
Dressing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU 5698 瞬间移动 数学
瞬间移动 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5698 Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次 ...
- HDU 5698——瞬间移动——————【逆元求组合数】
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- HDU 5698 瞬间移动
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- 排列组合+组合数取模 HDU 5894
// 排列组合+组合数取模 HDU 5894 // 题意:n个座位不同,m个人去坐(人是一样的),每个人之间至少相隔k个座位问方案数 // 思路: // 定好m个人 相邻人之间k个座位 剩下就剩n-( ...
- HDU 4497 GCD and LCM(分解质因子+排列组合)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4497 题意:已知GCD(x, y, z) = G,LCM(x, y, z) = L.告诉你G.L,求满 ...
- 排列组合 HDU - 1521 -指数型母函数
排列组合 HDU - 1521 一句话区分指数型母函数和母函数就是 母函数是组合数,指数型母函数是排列数 #include<bits/stdc++.h> using namespace s ...
- ACM~排列组合&&hdu例子
排列组合是数学中的一个分支.在计算机编程方面也有非常多的应用,主要有排列公式和组合公式.错排公式.母函数.Catalan Number(卡特兰数)等. 一.有关组合数学的公式 1.排列公式 P(n ...
- HDU 4045 Machine scheduling (组合数学-斯特林数,组合数学-排列组合)
Machine scheduling Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- STL概述
一.关于STL STL(Standard Template Library,标准模板库)是C++语言标准中的重要组成部分.STL 以模板类和模板函数的形式为程序员提供了各种数据结构和算法的精巧实现,程 ...
- Android——多线程编程练习题
随便选择两个城市作为预选旅游目标.实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市.分别用Runnable接口和Thread类实 ...
- jquery插件参数传递
当传递的参数在函数中未定义时,不会报错,但也不会发生作用,这会造成怎么传递参数不起作用的困惑.
- 5分钟实现Android中更换头像功能
写在前面:更换头像这个功能在用户界面几乎是100%出现的.通过拍摄照片或者调用图库中的图片,并且进行剪裁,来进行头像的设置.功能相关截图如下: 下面我们直接看看完整代码吧: 1 2 3 4 5 6 7 ...
- http,ftp
HTTP和FTP的区别 标签: ftpFTPhttpHttpHTTP 2012-12-13 19:51 10544人阅读 评论(1) 收藏 举报 分类: 网络(2) 目录(?)[+] 今天 ...
- SwitchyOmega
SwitchyOmega下载安装地址: http://switchyomega.com/download.html GFWList.bak.txt教程 {"+GFWed":{&qu ...
- [oracle] 解决X64操作系统PL/SQL连接报错问题 make sure you have the 32 bits oracle client installed
Windows 64位下装Oracle 11g 64位,PLSQL Developer使用出现以下问题: 1.Database下拉框为空: 2.强制输入用户名.密码及Database,登录弹出: In ...
- git在本地创建远程仓库
类似的博文,在前面的帖子里面也提到过,当时讲述的是一个入门级别的.其URL是ssh://username@repo-host-address/repo-path这种格式. 今天再说说如何创建类似Git ...
- Ruby Class
类定义: class 类名 类定义 end ※类名大写字母开始!!! 构造方法(initialize) 类名调用new方法的时候,触发的一个方法. def initialize(my_name = & ...
- $_SERVER 相关变量
PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用. $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root ...