题目大意:输入一个整数n,输出N! mod 2009 的结果。
解题思路:
1)任意数 n = ( n / 2009) * 2009 + n % 2009
2)40! mod 2009 等于 245
3)41! mod 2009 等于 0
4) 对于小于 2009 的数来说 n == n % 2009
代码如下:
/*
* 2674_1.cpp
*
* Created on: 2013年9月1日
* Author: Administrator
*/
#include <stdio.h>
int main(){
int n;
while(scanf("%d",&n)!=EOF){
if( n >= 41){
printf("0\n");
}else{
int temp = 1;
while(n >= 1){
temp *= n;
temp %= 2009;
n--;
}
printf("%d\n",temp);
}
}
}

本文介绍了一种计算N!mod2009的方法,适用于整数N。通过分析得出当N≥41时结果恒为0,对于较小的N则采用迭代方式计算并取模。
633

被折叠的 条评论
为什么被折叠?



