题目大意:                   要求n!%2009,n<10^9。 解题思路:                 那暴力肯定TLE+MLE,行不通。不过发现当n>=2009的时候,n!%2009=0.这个时候,就只需要求出前面的2009个数的阶乘,后面的打出0即可。 代码:
#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;
}
 
posted on 2012-02-13 15:50  cchun  阅读(159)  评论(0编辑  收藏  举报