您的位置:首页 > 其它

hdu 3213 GCC

2013-09-11 14:05 387 查看

GCC

Time
Limit: 1000/1000 MS
(Java/Others)    Memory
Limit: 131072/131072 K (Java/Others)Total Submission(s):
1816    Accepted
Submission(s): 567
Problem DescriptionThe 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 InputThe 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. OutputOutput the answer of (0! + 1! + 2! + 3! + 4! + ... + n!)%m.Constrains0 < T <= 200 <= n < 10^100 (without leading
zero)0 < m < 1000000 Sample Input

10
861017 Sample Output
593846这个题主要是运用啦模的运算,再就是当n大于m时n!%m总为零,只要考虑n以前的数就可以啦#include<stdio.h>
#include<string.h>
char s[1000005];
int main()
{
int m,T;
__int64 max;
scanf("%d",&T);
while(T--)
{
scanf("%s %d",s,&m);
int len=strlen(s);
if(len>=7)
max=m;
else
{
max=0;
for(int j=0;j<len;j++)
{
max+=s[j]-'0';
if(j!=len-1)
max=max*10;
}
}
__int64 sum=0,t=1;
int i;
for(i=1;i<=max;i++)
{
t=t*i%m;
sum=(sum+t)%m;
}
sum=(sum+1)%m;
printf("%I64d\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: