zoukankan      html  css  js  c++  java
  • P1134 阶乘问题

    题目描述

    也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如:

    12!= 1 imes 2 imes 3 imes 4 imes 5 imes 6 imes 7 imes 8 imes 9 imes 10 imes 11 imes 12 = 479,001,60012!=1×2×3×4×5×6×7×8×9×10×11×12=479,001,600

    1212的阶乘最右边的非零位为66。

    写一个程序,计算N(1 le N le 50,000,000)N(1≤N≤50,000,000)阶乘的最右边的非零位的值。

    注意:10,000,000!10,000,000!有24999992499999个零。

    输入输出格式

    输入格式:

    仅一行包含一个正整数NN。

    输出格式:

    一个整数,表示最右边的非零位的值。

    输入输出样例

    输入样例#1: 复制

    12

    输出样例#1: 复制

    6

    说明

    USACO Training Section 3.2

    题解:模拟阶乘,只需保留后面几位数即可,然后最后的时候输出最后一位,如果只考虑最后一位,会对阶乘的最后一位有影响

    代码:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<iostream>
    
    
    using namespace std;
    
    int main()
    {
         int n;
         cin>>n;
         long long int  s=1;
         int m;
         for(int t=1;t<=n;t++)
         {
         	m=t;
    
            m=m%100000000;
        	s=s%100000000;
            s=m*s;
            while(s%10==0) s/=10;
    //		cout<<"m "<<m<<"s "<<s<<endl;
         } 
    
         cout<<s%10<<endl;
        return 0;
    }
  • 相关阅读:
    第02组 Beta冲刺(4/4)
    第02组 Beta冲刺(2/4)
    第02组 Beta冲刺(3/4)
    第02组 Beta冲刺(1/4)
    第02组 Alpha事后诸葛亮
    第02组 Alpha冲刺(4/4)
    第02组 Alpha冲刺(3/4)
    第02组 Alpha冲刺(2/4)
    第02组 Alpha冲刺(1/4)
    第02组 Beta版本演示
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10782078.html
Copyright © 2011-2022 走看看