zoukankan      html  css  js  c++  java
  • bzoj2721 [Violet5]樱花

    bzoj2721 [Violet 5]樱花

    给出 (n)(frac{1}{x}+frac{1}{y}=frac{1}{n!}) 的正整数解数量 (mod (10^9+7))

    (nleq10^6)

    数论


    先化式子

    [egin{aligned}&frac{1}{x}+frac{1}{y}=frac{1}{n!}\&frac{xy}{x+y}=n!\&xy=n!(x+y)\&xy-n!x-n!y+n!^2=n!^2\&(x-n!)(y-n!)=n!^2end{aligned} ]

    (a=x-n!, b=y-n!)

    原题即为求 (ab=n!^2) 的整数解数量,即为 (n!^2) 的因数个数

    (n!=displaystyleprod_{p_iin p}p_i^{c_i})

    答案即为: $$displaystyleprod_{p_iin p}{(2 imes c_i+1)}$$

    (p.s. :) 如果原题为本质不同的方案数,即 (verb|Luogu5253 丢番图|) ,答案即为 (frac{ans+1}{2}) 。因为对于每个 ({(a, b) | a eq b}) 都被多算了一遍。

    至于求出 (c_i) ,可以先筛出 (1cdots n) 的每个质数 (p) ,然后考虑阶乘 (n!) 一共包含多少个 (p)

    (n!)(p) 的个数等于 (1cdots n) 中每个数包含 (p) 的个数之和。

    (1cdots n) 中, 至少包含一个 (p) 的数显然有 (lfloorfrac{n}{p} floor) 个。而至少包含两个 (p) 的数有 (lfloorfrac{n}{p^2} floor) 个。不过其中的一个质因子已经在 (lfloorfrac{n}{p} floor) 中统计过了,所以只需要再统计第二个质因子,即累加上 (lfloorfrac{n}{p^2} floor) ,而不是 (2 imeslfloorfrac{n}{p^2} floor)(lfloorfrac{n}{p^3} floor, lfloorfrac{n}{p^4} floor, cdots) 同理

    综上所述, (n!) 中质因子 (p) 的个数为: $$displaystylesum_{p^kleq n}{lfloorfrac{n}{p^k} floor}$$

    时间复杂度 (O(nlog n))

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e6 + 10, P = 1e9 + 7;
    int n, tot, p[maxn];
    
    void sieve() {
      int tmp = sqrt(n) + 1;
      for (int i = 2; i <= tmp; i++) {
        for (int j = i * i; j <= n; j += i) {
          p[j] = 1;
        }
      }
      for (int i = 2; i <= n; i++) {
        if (!p[i]) p[++tot] = i;
      }
    }
    
    int main() {
      scanf("%d", &n);
      sieve();
      int ans = 1;
      for (int i = 1; i <= tot; i++) {
        int x = 1, s = 0;
        while (1ll * p[i] * x <= n) {
          x *= p[i], s += n / x;
        }
        ans = 1ll * ans * (s << 1 | 1) % P;
      }
      printf("%d", ans);
      return 0;
    }
    
  • 相关阅读:
    linux上安装mysql
    Linux上安装elasticsearch
    解决pyhton aiohttp ssl:None [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)
    mysql数据库的数据变更事件获取以及相关数据
    [天下小黑盒]打地鼠小助手
    看到当年自己学SQL Server 的笔记
    CodeFirst EF中导航属性的个人理解
    在Win10下如何安装IMSL6.0
    商品中台三期压测
    压测
  • 原文地址:https://www.cnblogs.com/Juanzhang/p/10531276.html
Copyright © 2011-2022 走看看