GCC
Time Limit:1000MS
Total Submit:42 Accepted:12
Description
The GNU Compiler Collection (usually shortened to GCC) is a compiler system produced by the GNU Project supporting various programming languages. But it doesn’t contains the math operator “!”.
In mathematics the symbol represents the factorial operation. The expression n! means "the product of the integers from 1 to n". For example, 4! (read four factorial) is 4 × 3 × 2 × 1 = 24. (0! is defined as 1, which is a neutral element in multiplication, not multiplied by anything.)
We want you to help us with this formation: (0! + 1! + 2! + 3! + 4! + ... + n!)%m
Input
The first line consists of an integer T, indicating the number of test cases.
Each test on a single consists of two integer n and m.
Output
Output the answer of (0! + 1! + 2! + 3! + 4! + ... + n!) % m.
Constrains
0 < T <= 20
0 <= n < 10^100 (without leading zero)
0 < m < 1000000
Sample Input
1 10 861017
Sample Output
593846
Source
这题由于原来做过这类的题,所以很短时间就水过了(不过代码有点儿小漏洞,在杭电上提交需要稍微修改一下)
题意很简单,就是求(0! + 1! + 2! + 3! + 4! + ... + n!) % m的值
这题我用到了一个递推方程,假如说(n-1)!%m为k的话,那么n!%m=(k*n)%m,因为(a%m +b%m )%m= (a+b)%m
这样的话题就很简单了,不过要注意两点:1、0 1这组数据是个特例,所以在最后输出的时候要特殊处理或者结果再对m取余一下,2、递推用到的num和sum要定义为__int64类型的,不然不能过。
代码:
#include<string.h>
#include<stdlib.h>
int main()
{
}