水题一道,有挑战性的在于怎么把代码写简单
可知n>=2009是结果一定为0
所以控制循环次数,节省时间
代码如下:
#include <stdio.h>
#define E 2009
int main(void) {
int n, i, ans;
while(scanf("%d", &n) != EOF) {
ans = 1;
n >= 2009 ? n = -1 : 1;
for(i=2; i<=n; ++i)
ans = (ans*(i%E))%E;
n == 0 ? ans = 1 : 1;
n == -1 ? ans = 0 : 1;
printf("%d\n", ans);
}
}
看了下别人的代码,发现还可以更加简单
因为2009=41*7*7
所以只需要遍历到40即可,代码就不贴了