zoukankan      html  css  js  c++  java
  • 阶乘相关<同余与模算术>

    题意:
    题目很简明:
    令S[n]=1*1!+2*2!+3*3!+4*4!+....+n*n!
    求S[n]%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
    ",s);
        }
        return 0;
    }

    
    

    想的太多,做的太少。
  • 相关阅读:
    建议自学
    大牛之术
    学习榜样
    .net源码
    练习题
    学习-如何克服拖延
    如何解决困难问题
    最近阅读
    如何学习一门新语言
    安全问题关注博客
  • 原文地址:https://www.cnblogs.com/pealicx/p/6115643.html
Copyright © 2011-2022 走看看