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

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

    样例输入:

    10

    样例输出:

    37913

    代码如下

    #include<iostream>
    using namespace std;

    int main()
    {
        int num;            //存放数据
        int n;                //要输入的数
        
        while(cin>>n)        
        {
            int s = 0;
            
            for (int i = 1; i <= n; i++)        //小于 n 的整数
            {    
                num = 1;
                
                for (int j = 1; j <= i; j++)    //计算阶乘
                    num *= j;
                    
                s += num;                    //求和
            }
                
                
            
        //    cout<<s<<endl;
            cout<<(s % 1000000 )<<endl;        // 取余
        }
        return 0;
     }

    但是当我们输入的 n = 100 时,输出结果为-961703。直接告诉我们,乘法溢出了。

    **注:要计算只包含加法、减法和乘法的整数表达式除以正整数 n 的余数,可以在每步计算之后对 n 取余,结果不变。一个数对另一个数反复取余结果不变,即  a % b == a % b % b % b

    代码如下

    #include<iostream>
    using namespace std;

    int main()
    {
        int num;            
        int n;                
        
        while(cin>>n)        
        {
            int s = 0;
            
            for (int i = 1; i <= n; i++)        
            {    
                num = 1;
                
                for (int j = 1; j <= i; j++)    
                    num = num % 1000000 * j;
                    
                s = (s + num) % 1000000;                    
            }            
                
            cout<<s<<endl;    
        }
        return 0;
     }

    **注:当 n 从40开始,答案始终不变。因为 25!末尾有 6 个 0 ,所以后面的所有相都不会影响和的末位 6 位数————只需要在程序前面加一条语句 " if (n > 25)   n = 25; ",就可提高效率

  • 相关阅读:
    修改其他输入法为android 默认输入法
    {php 数据类型}
    转:PHP.ini配置文件(中文)
    php导出任意mysql数据库中的表去excel文件
    php输出、写入csv
    smarty二级分类代码和模版循环例子
    笔记:使ecshop 模板中可引用 常量
    Windows下Apache2不同域名解析不同目录解决方法
    {php 数组}
    Apache中.htaccess文件功能
  • 原文地址:https://www.cnblogs.com/go-alltheway/p/13336019.html
Copyright © 2011-2022 走看看