zoukankan      html  css  js  c++  java
  • [Violet]樱花(数学推导+n!质因子分解)

    传送门

    以下图片公式推导摘自洛谷题解

    然后我觉得这道题就价值在如何求阶乘的因子个数。

    实现的时候每次除一个p,就是从从p^k的倍数的个数变为求p^(k+1)的倍数的个数了。

    最后统计答案时乘num*2+1,因为求的是(n!)^2的因子。

    #include<bits/stdc++.h>
    #define LL long long
    #define re register
    #define INF 2100000000
    #define N 1000013
    #define mod 1000000007
    using namespace std;
    LL read()
    {
        LL x=0,f=1;char s=getchar();
        while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
        while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
        return x*f;
    }
    int notp[N],prime[N];
    int tot=0;
    void init()
    {
        for(int i=2;i<=N;++i)
        {
            if(!notp[i])prime[++tot]=i;
            for(int j=1;j<=tot&&i*prime[j]<=N;++j)
            {
                notp[i*prime[j]]=1;
                if(i%prime[j]==0)break;
            }
        }
    }
    int main()
    {
        LL n=read();
        init();
        LL ans=1;
        for(int i=1;i<=tot;++i)
        {
            LL res=0;
            for(int j=n;j;j/=prime[i])res+=j/prime[i];
            ans=(ans*(res*2+1)%mod)%mod;
        }
        printf("%lld
    ",ans);
    }
    View Code
  • 相关阅读:
    Java基础--day04
    Java基础--day03
    Java基础--day02
    高斯键盘设置指南
    博客园主题配置
    算法笔记--二分
    Test2反思
    树链剖分【模板】
    7.20关于莫队算法的一些初步理解
    分块(n根n复杂度)
  • 原文地址:https://www.cnblogs.com/yyys-/p/11801610.html
Copyright © 2011-2022 走看看