zoukankan      html  css  js  c++  java
  • 阶乘之和

                    1716: 阶乘之和(2)

    Description

    输入一个正整数n,计算S=1!+2!+3!+…+n!的末6位(不含前导0)。n的范围为:0<n≤10^6。

    Input

    一个正整数n。

    Output

    输出S的末6位数字,不输出前导0。

    Sample Input

    10

    Sample Output

    37913

    第一种算法:双层循环,运行超时
    #include <stdio.h>
    int main()
    {
        int n;
        int i;
        int j;
        int s;
        int sum = 0;
        scanf("%d",&n);
        for (i=1; i<=n; i++)
        {
            s = 1;
            for (j=2; j<=i; j++)
            {
                s *= j;
                s %= 1000000;  //忽略六位以后的数字,不影响结果
            }
            sum += s;
            sum %= 1000000;
        }
        printf("%d",sum);
        
        return 0;
    }
    第二种算法:利用阶层的记忆性(n! == n*(n-1)!),转换为单层循环
    #include <stdio.h>
    int main()
    {
        int n;
        int i = 1;
        int s = 1;
        int sum = 0;
        scanf("%d",&n);
        
        while (i <= n)
        {
            s *= i;    //n!==n*(n-1)!,所以在求出(n-1)!之后不必再单独求n!
            s %= 1000000;  
            sum += s;
            sum %= 1000000;
            i++;
        }
        printf("%d",sum);
        
        return 0;
    }
     
    蒹葭苍苍,白露为霜; 所谓伊人,在水一方。
  • 相关阅读:
    ActionContext和ServletActionContext
    1.有Dao为什么还要Service?
    1.DBCP和CP30的区别
    设计模式之单例模式(java实现)
    DOM之练习2
    js之DOM练习题
    动态改变dom结构常用方法
    js 自动类型转换
    定位属性position
    html基础
  • 原文地址:https://www.cnblogs.com/huwt/p/10193022.html
Copyright © 2011-2022 走看看