Unknown Treasure
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 168 Accepted Submission(s): 40
Problem Description
On the way to the next secret treasure hiding place, the mathematician discovered a cave unknown to the map. The mathematician entered the cave because it is there. Somewhere deep in the cave, she found a treasure chest with a combination lock and some numbers on it. After quite a research, the mathematician found out that the correct combination to the lock would be obtained by calculating how many ways are there to pick
m different apples among
n of them and modulo it with
M.
M is the product of several different primes.
Input
On the first line there is an integer
T(T≤20) representing the number of test cases.
Each test case starts with three integers
n,m,k(1≤m≤n≤1018,1≤k≤10) on a line where
k is the number of primes. Following on the next line are
k different primes
p1,...,pk. It is guaranteed that
M=p1·p2···pk≤1018 and
pi≤105 for every
i∈{1,...,k}.
Output
For each test case output the correct combination on a line.
Sample Input
Sample Output
Source
2015 ACM/ICPC Asia Regional Changchun Online
解题报告:2015长春网络赛。求C(n, m) % (∏pi)。pi小于10^5,m, n, 以及答案都是10^18。
先使用Lucas定理求出对于每个pi,C(n, m) % pi的值。再使用中国剩余定理对模数和余数求解即可。代码如下:
#include
#include
#include
#include
#include
#include
#include
#include