HDU 2674

0 <= N<=10^9

看到这个数据范围知道常规方法肯定做不出来、

 不过一想想既然是mod2009,是不是只要其中含有一个2009,那么其结果一定是0了呢

说了这里思路,就是看什么时候出现2009这个因式,41!中  41*7*7;也就是说n>40的结果都是0了

 贴代码了

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 const int qq=1e1+5;
 5 int num[qq];
 6 int main()
 7 {    
 8         num[0]=1;
 9         for(int i=1;i<=40;++i)
10             num[i]=(i*num[i-1])%2009;
11         int n;
12         while(cin >> n){
13             if(n>40)    cout << 0 << endl;
14             else
15             cout << num[n] << endl;
16         }
17 }
原文地址:https://www.cnblogs.com/sasuke-/p/5159105.html