阶乘相关<同余与模算术>
2016-05-16 21:06
218 查看
题意:
题目很简明: 令S =1*1!+2*2!+3*3!+4*4!+....+n*n! 求S %10000007
多组测试数据 每组一个n n的范围:1<=n<=1000000
思路:看代码看懂的,数学真的有魔性。最重要的算法是<同余与模算术刘汝佳/p314>,这个题还用了一个小技巧:在求n*n!的时候<!的优先级大于*的优先级>由于已经知道(n-1)!%mod=t,所以呢,只需要在t的基础上乘n即可。大神的代码,有改进。
<pre name="code" class="cpp">#include<stdio.h> const int mod=10000007; int main() { int n; while(~scanf("%d",&n)){ int i; long long s=0,t=1; for (i=1;i<=n;i++){ t=(t*i)%mod; s=(s+(t*i)%mod)%mod; } printf("%lld\n",s); } return 0; }
相关文章推荐
- Unreal为什么公开源代码
- 看图说说Heap中对象的生存状态
- android battery stats
- HTTP头部信息解释分析(详细整理)
- 宿舍管理系统
- Problem-C
- Extjs-panel-collapse 相关属性使用记录
- Android监听回调的一些理解
- 手机开发实战22——GPRS移动性管理2
- shell脚本
- Javascript闭包(Closure)
- 如何使用storyboard和xib
- linux下删除所有.svn目录
- 关于UIView的autoresizingMask属性 学习
- ListView、GridView实现下拉刷新上拉加载更多
- 手机开发实战21——GPRS移动性管理1
- 手机开发实战20——GPRS区域定义
- IPC—进程间的通信(信号量,共享内存,消息队列)
- Error running Tomcat8: Address localhost:1099 is a
- 表单验证