zoukankan      html  css  js  c++  java
  • 阶乘之和 南邮NOJ 1093

    阶乘之和

    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 2176            测试通过 : 526 

    题目描述

    输入n,计算S=1!+ 2!+…+ n!的末6位(不含前导0)。这里,n!表示前n个正整数之积。

    输入

    输入n,,n≤ 106

    输出

    输出S的末6位(不含前导0)。

    样例输入

    10

    样例输出

    37913

    题目来源

    刘汝佳《算法竞赛入门经典》


    #include<cstdio>
    const int MOD=1000000;  //定义求余常量
    int main()
    {
        int i,n,sum=0;
        static int m=1;
        scanf("%d",&n);
        if ( n >= 26 )  //25!末尾有6个0,所以从该项开始,后面的所有项都不会影响和的末6位数字
          printf("940313
    ");
        else
        {
            for(i=1;i<=n;i++)
            {
               m*=i;
               m=m%MOD;
               sum=(sum+m)%MOD;
            }
            printf("%d
    ",sum);
        }
        return 0;
    }
    其他做法极容易超时,关键点在于:在程序的最前面加上一句if(n>25) n=25;效率和溢出都不成问题了。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    网格走法数目
    字典序(数据字典)
    异或(数据字典)
    头条校招
    Python中的zip()
    什么是“背书”
    求十进制整数的任意进制转换
    安装并使用pyecharts库(0.5.10)
    pycharm使用Ctrl+滚轮调整字体大小
    Anaconda中安装pyecharts
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965783.html
Copyright © 2011-2022 走看看