杭电acm 3132GCC(简单数论)
2017-08-03 21:43
411 查看
GCC
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 5140 Accepted Submission(s): 1716
Problem 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
2009 Asia Wuhan Regional Contest Online
想法:
n>m时,比m大的数乘起后对取余m后没影响
代码:
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n,m,cas,t;
long long mid,sum;
char s[1000];
scanf("%d",&cas);
while(cas--)
{
scanf("%s %d",&s,&m);
if(strlen(s)>=7)
t=m;
else sscanf(s,"%d",&t);
mid=1;
sum=1;
for(i=1;i<=t;i++)
{
mid=(mid*i)%m;
sum=(sum+mid)%m;
}
printf("%lld\n",sum%m);//这里一定一定要%m 否则会错
}
return 0;
}
相关文章推荐
- 杭电ACM 1239 简单的搜索类 Callin…
- 杭电ACM1220——Cube~~简单的数学题
- 杭电(oj)ACM 2586 简单LCA
- 杭电acm 1365 数论
- 杭电acm step 动态规划专题总结(1)简单的动态规划问题
- 杭电 ACM 1035 简单模拟题
- 杭电ACM课件学习 简单数学题
- 杭电ACM几个简单的算法
- 杭电ACM 1096 简单求和
- 杭电acm简单题之那些多发的“低级”错误
- 杭电ACM 今年暑假不AC 2037(关于最简单的贪心算法)
- 杭电acm 1259ZJUTACM(简单题)
- [ACM - 数论]最简单的计算机
- [ACM - 数论]最简单的计算机
- 杭电acm 5053 the Sum of Cube(简单水题)
- ACM 数论 扩展欧几里得算法 简单应用 NYOJ 144 小珂的苦恼
- 【求助】杭电ACM 1001 一道简单问题,老是PE
- ACM: 一道简单数论题 (重要的是建…
- 杭电acm 5969 最大的位或(数论)
- 杭电ACM1240——Asteroids!~~简单的BFS