杭电2674
题意:求N!%2009(起初以为是求N!,搞死人)
Analyse:2009=7*7*41,N>=41时,N!因式分解一定含7*7*41,即N!%2009=0.所以只要计算0<=N<=40时的答案就OK。设N!=m+2009*n,N!%2009=m,(N+1)!%2009=[(N+1)*(m+2009*n)]%2009=[m*(N+1)]%2009,有了这个就可以轻易递推求解了。
View Code
1 #include<stdio.h> 2 int main() 3 { 4 int a[41]; 5 int i; 6 a[0]=1; 7 for(i=1;i<41;i++) 8 a[i]=(a[i-1]*i)%2009; 9 while(scanf("%d",&i)!=EOF) 10 { 11 if(i<41) 12 printf("%d\n",a[i]); 13 else 14 printf("0\n"); 15 } 16 return 0; 17 } 18


浙公网安备 33010602011771号