#include using namespace std; int main(void) { int n; while(scanf("%d", &n) == 1) { if(n >= 2009) { printf("0\n"); continue; } int ans = 1; for(int i = 1; i <= n; i++) { ans *= i; ans %= 2009; } printf("%d\n", ans); } return 0; }
题目大意: 要求n!%2009,n<10^9。 解题思路: 那暴力肯定TLE+MLE,行不通。不过发现当n>=2009的时候,n!%2009=0.这个时候,就只需要求出前面的2009个数的阶乘,后面的打出0即可。 代码:
转载于:https://www.cnblogs.com/cchun/archive/2012/02/13/2520222.html