一开始以为有循环节,输出了前100项发现n>40都是0。因此,水题....
#include<cstdio> long long a[100]; const long long MOD=2009; int main() { a[0]=1; for(int i=1; i<=40; i++) a[i]=(i*a[i-1])%MOD; long long n; while(~scanf("%lld",&n)) { if(n<=40) printf("%lld ",a[n]); else printf("0 "); } return 0; }