数论简单题 组合数

本人水平有限,题解不到为处,请多多谅解

本蒟蒻谢谢大家观看

题目:

数论简单题

(simple.cpp/in/out 1s 256M)

由于最终结果可能超过int的范围,因此请将运算结果对1000000007取模。

Input

第1行,一个整数T(T <= 200000),表示数据组数。

第2行至第T+1行,每行两个整数m, n。

0 < m <= n <= 2000

Output

共T行,每行输出一个整数,代表求和结果。

Sample Input

3

1 1

2 3

3 3

Sample Output

1

3

1

前一个数由后一个数累加而来

可以通过样例分析,是求组合数

组合意义:

循环变量构成一个递增的序列,因此只要在n个数中选出m个数,按从小到大的顺序依次分配给m个循环变量即可,组合数可用DP求杨辉三角得。

由于T很大,需要进行预处理。

时间复杂度O(nm)。

code:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define N 2020
 4 #define ll long long
 5 #define mod 1000000007
 6 ll t,n,m;
 7 ll c[N][N];
 8 int main()
 9 {
10     c[1][0]=c[1][1]=1;
11     for(ll i=2;i<=2011;i++)
12     {
13         c[i][0]=1;
14         for(ll j=1;j<=2011;j++)
15             c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;//杨辉三角求法
16     }
17     scanf("%lld",&t);
18     while(t--)
19     {
20         scanf("%lld%lld",&m,&n);
21         printf("%lld\n",c[n][m]);
22     }
23     return 0;
24 }

原文地址:https://www.cnblogs.com/nlyzl/p/11713891.html

时间: 2024-11-10 12:01:01

数论简单题 组合数的相关文章

数论 --- 简单题

吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 22376    Accepted Submission(s): 6396 Problem Description HOHO, 终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一 种,这样:

【bzoj2751】[HAOI2012]容易题(easy) 数论,简单题

Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,要求你求出所有可能的数列的积的和 mod 1000000007的值,是不是很简单呢?呵呵! Input 第一行三个整数n,m,k分别表示数列元素的取值范围,数列元素个数,以及已知的限制条数.接下来k行,每行两个正整数x,y表示A[x]的值不能是y.

uva 10006 数论入门题

这是一个入门的数论题目 , 只需要简单的找素数和快速幂取模 题意:输入一个数 n , 如果这个数是非素数 , 问是不是 这个2~n-1区间的所有数都满足 ? 解法:由于数据量不大 , 可以直接暴力求解 解法1: 暴力求解 #include <iostream> #include <string.h> #include <stdio.h> using namespace std; long long prime[65010]; long long n; void init

poj2105 IP Address(简单题)

题目链接:http://poj.org/problem?id=2105 Description Suppose you are reading byte streams from any device, representing IP addresses. Your task is to convert a 32 characters long sequence of '1s' and '0s' (bits) to a dotted decimal format. A dotted decima

poj 3270 Cow Sorting 置换群 简单题

假设初始状态为 a:2 3 1 5 4 6 则目标状态为 b:1 2 3 4 5 6且下标为初始状态中的3 1 2 4 5 6(a[3],a[1]...) 将置换群写成循环的形式 (2,3,1),(5,4),6就不用移动了. 移动方式2种 1:选循环内最小的数和其他len-1个数交换 2:选整个序列最小的数和循环内最小的数交换,转到1,再换回来. #include<cstdio> #include<queue> #include<algorithm> #include&

BZOJ 2683 简单题 ——CDQ分治

简单题 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i) #define D(i,j,k) for (int i=j;i>=k;--i) #define maxn 2000005 int sum[maxn]; void a

HNU 12868 Island (简单题)

题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12868&courseid=272 解题报告:输入n*m的地图,+表示土地,-表示水,要你求这个海岛的海岸线有多长,扫一遍就可以了. 1 #include<cstdio> 2 const int maxn = 2000; 3 char map[maxn][maxn]; 4 int _x[4] = {-1,0,1,0}; 5 int _y[4] = {0

poj 3112 Digital Biochemist Circuit(简单题)

题目链接:http://poj.org/problem?id=3112 Digital Biochemist Circuit Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 876   Accepted: 375 Description A digital biochemist circuit (DBC) is a device composed of a set of processing nodes. Each pro

hdu 1201 18岁生日 (简单题)

18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 18281    Accepted Submission(s): 5776 Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他