您的位置:首页 > 大数据 > 人工智能

杭电-2674N!Again(大数阶乘)

2015-12-04 16:08 489 查看

N!Again

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 4267 Accepted Submission(s): 2279

[align=left]Problem Description[/align]
WhereIsHeroFrom: Zty, what are you doing ?

Zty: I want to calculate N!......

WhereIsHeroFrom: So easy! How big N is ?

Zty: 1 <=N <=1000000000000000000000000000000000000000000000…

WhereIsHeroFrom: Oh! You must be crazy! Are you Fa Shao?

Zty: No. I haven's finished my saying. I just said I want to calculate N! mod 2009

Hint : 0! = 1, N! = N*(N-1)!

[align=left]Input[/align]
Each line will contain one integer N(0 <= N<=10^9). Process to end of file.

[align=left]Output[/align]
For each case, output N! mod 2009

[align=left]Sample Input[/align]

4
5


[align=left]Sample Output[/align]

24
120


大数阶乘,但是规律是41及其以后取余2009都为0,一定要优化这一句,否则超时

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long solve(long long  n)
{
long long t=1;
for(long long i=n;i>=2;i--)
t=i*t%2009;
return t;
}
int main()
{
long long a,n,i;
while(scanf("%lld",&n)!=EOF)
{
if(n>=41)
printf("0\n");
else
{
a=solve(n);
printf("%lld\n",a);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: