zoukankan      html  css  js  c++  java
  • 洛谷题解 P1134 【阶乘问题】

    原题传送门

    题目描述

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

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

    12的阶乘最右边的非零位为6。

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

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

    输入格式

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

    输出格式

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

    输入输出样例

    输入 #1

    12

    输出 #1

    6

    说明/提示

    USACO Training Section 3.2

    ------------------------------------------以下为题解部分--------------------------------------------------------------

    分析:

    思路:

    这道题一看就可以发现,是非常容易用暴力解出来的。我们只需要乘出来阶乘的结果,暴力取余+判断,就可以完美的AC过了。

    原因:

    首先这道题数据较弱,从N的范围就可以略知一二:

    N(1≤N≤50,000,000)
    暴力刚好可以AC,于是。。。。。。

    代码:

    #include<iostream>
    using namespace std;
    int main(){
        ios::sync_with_stdio(false);
        long long ans=1; //阶乘变量 
        int n;            
        cin>>n;
        for(int i=1;i<=n;i++){
            ans*=i;   //计算阶乘 
            while(ans%10==0) ans/=10; //去掉末尾无用的0 
            ans=ans%100000000;	//玄学的强大力量(数据太弱) 
        }
        cout<<ans%10;
        return 0;
    }
    

    最后吐槽:数据太弱!!!

    本文欢迎转载,转载时请注明本文链接
  • 相关阅读:
    Windows Terminal 配色方案说明
    Windows Terminal 美化简记
    家庭组网启用 NAS
    Eclipse使用Git检出项目
    SVN clean失败解决方法
    httpClient closeableHttpClient
    JSON字符串与Map互转
    httpclient用getStatusCode
    同一台电脑同时装jdk1.8和jdk1.7
    PL/SQL连接远程oracle数据库配置
  • 原文地址:https://www.cnblogs.com/-pwl/p/12287751.html
Copyright © 2011-2022 走看看