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 ...
随机推荐
- mysql创建用户和创建数据库赋值用户操作权限
mysql 进入mysqldb SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; ...
- scala言语基础学习四
伴生对象 object方法构造函数只会执行一次.伴生对象和对象之间private对象可以互相访问 让object继承抽象类 apply方法 可以不new就构造对象 类似于var s = ArrayBu ...
- POJ1149 PIGS (网络流)
PIGS Time Limit: 1000MS M ...
- Promise 学习笔记
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消息.Promise提供统一的API, ...
- Mac上因磁盘格式导致gulp无限刷新问题
今天遇到个超奇葩的问题,使用gulp.watch监控文件变化,但是并没有修改文件,却一直执行change,导致浏览器无限刷新 调试了10小时,代码各种删改,一直不得其解.切换到Windows运行,又正 ...
- Java-JDBC连接Oracle 数据库
package com.zse.oracle; import oracle.jdbc.*; import java.sql.*; import javax.swing.text.html.HTMLDo ...
- linux包之bash之内置命令ulimit
概述 [root@localhost ~]# rpm -qa|grep bashbash-4.1.2-15.el6_4.x86_64 linux limits.conf 配置 limits.conf ...
- USACO/gift1
描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少. 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人. 然而,在任何一群朋友中 ...
- morris.js 简单学习
需要添加的引用脚本 <script src="http://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js&qu ...
- REG_SZ和REG_EXPAND_SZ的区别
REG_SZ类型的键值中存在的可扩展占位符%xxx%不会被系统解释: REG_EXPAND_SZ类型的键值中存在的%xxx%的部分会被系统解释.