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 }
原文:http://www.cnblogs.com/sasuke-/p/5159105.html