数论 - 算数基本定理的运用 --- nefu 118 : n!后面有多少个0

题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php



Mean:

略。

analyse:

刚开始想了半天都没想出来,数据这么大,难道是有什么公式?

首先我们要知道一点:n!里面所有的0都是2*5得来的,而且不管怎样2的数量一定是>5的数量,所以我们只需要考虑有多少个5就可。

后面也是看了解题报告才知道有这么一个结论。

这是算数基本定理的一个结论:

n!的素因子分解中的素数p的幂为:[n/p]+[n/p^2]+[n/p^3]+...

知道这个结论,这道题就是一道大水题,1分钟ac。数论就是这样==。

Time complexity:O(n)

Source code:

/*
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---‘\____
             .‘  \\|     |//  `.
            /  \\|||  :  |||//             /  _||||| -:- |||||-             |   | \\\  -  /// |   |
           | \_|  ‘‘\---/‘‘  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .‘  /--.--\  `. . __
      ."" ‘<  `.___\_<|>_/___.‘  >‘"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-‘======
                   `=---=‘
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.............................................
           佛祖镇楼                  BUG辟易
     佛曰:
           写字楼里写字间,写字间里程序员;
           程序人员写程序,又拿程序换酒钱。
           酒醒只在网上坐,酒醉还来网下眠;
           酒醉酒醒日复日,网上网下年复年。
           但愿老死电脑间,不愿鞠躬老板前;
           奔驰宝马贵者趣,公交自行程序员。
           别人笑我忒疯癫,我笑自己命太贱;
           不见满街漂亮妹,哪个归得程序员?
*/

//Memory   Time
// 1347K   0MS
// by : Snarl_jsb
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<string>
#include<climits>
#include<cmath>
#define MAX 1100
#define LL long long
using namespace std;

int main()
{
//    freopen("C:\\Users\\ASUS\\Desktop\\cin.txt","r",stdin);
//    freopen("C:\\Users\\ASUS\\Desktop\\cout.txt","w",stdout);
    int t,m;
    cin>>t;
    while(t--)
    {
        cin>>m;
        int five=5;
        int ans=0;
        while(five<=m)
        {
            ans+=m/five;
            five*=5;
        }
        cout<<ans<<endl;
    }
    return 0;
}

  

时间: 2024-08-29 19:38:14

数论 - 算数基本定理的运用 --- nefu 118 : n!后面有多少个0的相关文章

nefu 118 n!后面有多少个0 算数基本定理,素数分解

n!后面有多少个0 Time Limit 1000ms Memory Limit 65536K description 从输入中读取一个数n,求出n!中末尾0的个数. input 输入有若干行.第一行上有一个整数m,指明接下来的数字的个数.然后是m行,每一行包含一个确定的正整数n,1<=n<=1000000000. output 对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数. sample_input 3 3 100 1024 sample_output 0 24 253 考

NEFU 118 n!后面有多少个0【数论】

http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=118 求n!后面有多少个0(1<=n<=1000000000),显然,n!肯定存不下. 2*5=10,所以有多少个2*5就有多少个0,所以只须求n!中因子2和因子5的个数.根据结论有 f(2) = [ n / 2 ] + [ n / 4 ] + [ n / 8 ] + -- f(5) = [ n / 5 ] + [ n / 25 ] + [ n / 125 ] + --

NEFU 118 n!后面有多少个0 (n!的素因子幂问题)

n!后面有多少个0 Problem : 118 Time Limit : 1000ms Memory Limit : 65536K description 从输入中读取一个数n,求出n!中末尾0的个数. input 输入有若干行.第一行上有一个整数m,指明接下来的数字的个数.然后是m行,每一行包含一个确定的正整数n,1<=n<=1000000000. output 对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数. sample_input 3 3 100 1024 sample

nefu 118 n!后面有多少个0(算数基本定理)

题意:从输入中读取一个数n,求出n!中末尾0的个数. 思路:阶乘后的数很大,不可能直接计算的,对于任意一个正整数,若对其进行因式分解,那么其末尾的0必定可以分解为2*5,在这里,每一个0必然和一个因子5对应,但是注意,一个数的因式分解中的因子5不一定对应着一个0,因为还需要一个2呢,对于n!,在饮食分解中,2的因子个数要大于5的因子个数,所以如果存在一个因子5,那么它必然对应着n!末尾的一个0,本题便变为了 求 因子5的个数,有因为5是素数,所以可以用到算术基本定理的 n!的素数因子分解中的素数

LightOJ 1341 Aladdin and the Flying Carpet 算数基本定理

题目大意:给出面积n,和最短边m,求能形成的矩形的个数(不能为正方形). 题目思路:根据算数基本定理有: 1.每个数n都能被分解为:n=p1^a1*p2^a2*^p3^a3……pn^an(p为素数); 2.n的正因数的个数sum为:sum=(1+a1)*(1+a2)*(1+a3)……(1+an); 最短边为m,若m>=sqrt(n),则无解.所以m最多我10^6,可遍历找出1-m中n的因子,并用sum去减去这类因子的个数. ps:最近一直想去证明算数基本定理,可是感觉能力不够,唉,慢慢来吧. #

LightOJ Aladdin and the Flying Carpet 1341【算数基本定理+几何】

1341 - Aladdin and the Flying Carpet PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 MB It's said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summons a powerful Genie. Here we are concerned

数论的基本定理

1 . 数论的基本定理 (a + b) mod c = ((a mod c) + (b mod c)) mod c (a * b) mod c = ((a mod c) * (b mod c)) mod c // 消去律 a*c ≡b*c(mod m) 等价于 a ≡b(mod m/gcd(m,c))

[LightOJ 1341] Aladdin and the Flying Carpet (算数基本定理(唯一分解定理))

题目链接: https://vjudge.net/problem/LightOJ-1341 题目描述: 问有几种边长为整数的矩形面积等于a,且矩形的短边不小于b 算数基本定理的知识点:https://baike.baidu.com/item/%E7%AE%97%E6%9C%AF%E5%9F%BA%E6%9C%AC%E5%AE%9A%E7%90%86/10920095?fr=aladdin 1 #include<cstdio> 2 #include<vector> 3 #includ

数论-算术基本定理

算术基本定理又叫唯一因子分解定理,算术基本定理的表述如下: 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 ,这里P1<P2<P3......<Pn均为质数,其中指数ai是正整数.这样的分解称为 N 的标准分解式. 在进行证明这个定理之前,先说一个关于素数整除性的一个基本而重要的事实. 欧几里得引理:对所有的素数p和所有整数a,b,如果p|ab,则p|a,或p|b.即:如果一个素数整除两个正整数的乘积,那么这个素数可以至少整除这两个正整数中的一个.如果