hdu 2674 N!Again(简单数学)
2016-08-08 09:45
281 查看
Problem Description
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)!
Input
Each line will contain one integer N(0 <= N<=10^9). Process to end of file.
Output
For each case, output N! mod 2009
Sample Input
4
5
Sample Output
24
120
真有些想不到,做这道题就看你数感强不强,如果技巧找到了,极为简单。相关解释在代码中已经给出:
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)!
Input
Each line will contain one integer N(0 <= N<=10^9). Process to end of file.
Output
For each case, output N! mod 2009
Sample Input
4
5
Sample Output
24
120
真有些想不到,做这道题就看你数感强不强,如果技巧找到了,极为简单。相关解释在代码中已经给出:
/* 2009 = 7*7*41,所以42之后的阶乘除以2009取余数都为0 */ #include<iostream> #include<cstring> using namespace std; int main() { int num[45]; num[0] = 1; num[1] = 1; for(int i=2;i<=41;i++) { num[i] = (num[i-1]*i)%2009; } int n; while(cin>>n) { if(n<=41) { cout<<num <<endl; } else { cout<<0<<endl; } } return 0; }
相关文章推荐
- (step7.2.4)hdu 2674(N!Again——简单数论)
- hdu 2674 N!Again(数学:水题)
- (step7.2.4)hdu 2674(N!Again——简单数论)
- HDU 2674 N!Again(数学思维水题)
- HDU 2674 N!Again【数学&&同余定理】
- hdu 1788 Chinese remainder theorem again((数学:简单题)
- HDU 2674:N!Again【数学】
- hdu 2674(N!Again)
- HDU 2674 N! Again
- HDU 2674 N! Again
- hdu 2201 (简单数学概率)
- HDU-2899(简单数学问题+二分查找)
- hdu 4061 数学(结论简单)
- HDU 1012 u Calculate e(简单数学)
- hdu 2212 (简单数学)
- hdu2899 简单数学+二分+三分
- hdu 2114 Calculate S(n) 简单数学题
- hdu 1056(简单数学)
- HDU 1214 圆桌会议 简单数学题
- hdu 3876 A pupil’s problem(简单数学题)