GYM 100883 G.Count Mix Strings(组合数学)
2017-03-14 14:38
543 查看
Description
给出两个长度分别为n和m的字符串a和b,要求在不改变两个串内部的先后顺序的条件下把两个串并在一起,问情况数(算重)
Input
第一行一整数T表示用例组数,每组用例输入两个整数n和m表示两个串的长度(1<=T,n,m<=10000)
Output
输出方案数
Sample Input
3
1 1
1 2
2 2
Sample Output
2
3
6
Solution
显然答案为C(n+m,n)
Code
给出两个长度分别为n和m的字符串a和b,要求在不改变两个串内部的先后顺序的条件下把两个串并在一起,问情况数(算重)
Input
第一行一整数T表示用例组数,每组用例输入两个整数n和m表示两个串的长度(1<=T,n,m<=10000)
Output
输出方案数
Sample Input
3
1 1
1 2
2 2
Sample Output
2
3
6
Solution
显然答案为C(n+m,n)
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 22222 const ll mod=1000000007ll; ll f[maxn],inv[maxn]; ll mod_pow(ll a,ll b,ll mod) { ll ans=1ll; while(b) { if(b&1)ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans; } void init() { f[0]=inv[0]=1; for(int i=1;i<=20000;i++)f[i]=1ll*i*f[i-1]%mod,inv[i]=mod_pow(f[i],mod-2,mod); } ll deal(int n,int m) { return f[n+m]*inv %mod*inv[m]%mod; } int main() { init(); int T,n,m; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); ll ans=deal(n,m); printf("%I64d\n",ans); } return 0; }
相关文章推荐
- HDU 4372 Count the Buildings [组合数学]
- Gym 100425A Luggage Distribution (组合数学,二分)
- HDU 4372 Count the Buildings(组合数学-斯特林数,组合数学-排列组合)
- HDU 4372 Count the Buildings(组合数学-斯特林数,组合数学-排列组合)
- Gym - 101498D-组合数学&求组合数-Counting Paths
- Codeforces Gym 100418K Cards 组合数学
- HDU 4372: Count the Buildings 第一类斯特林数 组合数学
- Codeforces Gym 100338H High Speed Trains 组合数学+dp+高精度
- SPOJ 27268 VECTAR5 - Count Subsets(组合数学)
- 【HDU】1131 - Count the Trees(组合数学 - 卡特兰数 & java)
- HDU 4372 Count the Buildings 组合数学
- HDU 4372 Count the Buildings 组合数学
- Codeforces Gym 100379J Move the (p, q)-knight to the corner! 组合数学DP, Lucas定理
- GYM 100801 C.Concatenation(组合数学)
- Codeforces 451D - Count Good Substrings(组合数学)
- HDU - 4810 Wall Painting(组合数学)
- bzoj 4402 Claris的剑 组合数学
- 【组合数学】Bzoj2916 [Poi1997]Monochromatic Triangles
- Uva 11076 Add Again 解题报告(组合数学)
- 输出字符串的所有全排列(递归法和非递归,非递归采用组合数学的字典序)