题目大意:
要求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;
}