题目链接

洛谷

狗粮版

前置技能

  1. 初中基础的因式分解
  2. 线性筛
  3. \(O(nlog)\)的分解质因数
  4. 唯一分解定理

题解

首先来分解一下式子

\[\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}
\]

通分可化为:

\[\frac{x+y}{xy}=\frac{1}{n!}
\]

两边同时乘\(xy*(n!)\)

\[(x+y)n!=xy
\]

移项得:

\[xy-(x+y)n!=0
\]

两边同时加上\((n!)^2\)

\[xy-(x+y)n!+(n!)^2=(n!)^2
\]

通过十字相乘可因式分解为:

\[(x-n!)(y-n!)=(n!)^2
\]

\[∵\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}
\]

\[∴x,y>n!
\]

又因为\(x,y\)为正整数,所以\((x-n!),(y-n!)\)也为正整数,所以我们不妨令

\[X=(x-n!),Y=(y-n!)
\]

则原式可以化为:

\[XY=(n!)^2
\]

根据唯一分解定理可知

\[n!=P_1^{a_1}P_2^{a_2}P_3^{a_3}...P_n^{a_n}(p_i为质数)
\]

\((n!)^2\)的因数个数为:

\[(2*a_1+1)*(2*a_2+1)*(2*a_3+1)*...*(2*a_n+1)
\]

所以我们只要算出\(a_1,a_2,a_3...a_n\)就好了

至于怎么算,线性筛一遍,在分解质因数,求\(a_i\)就好了

code

  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. const int N=1000000;
  5. const int mod = 1e9+7;
  6. int prime[N+1],a[N+1],js,v[N+1],c[N+1];
  7. int read(){
  8. int x=0,f=1;char c=getchar();
  9. while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
  10. while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
  11. return x*f;
  12. }
  13. void pd(){
  14. for(int i=2;i<=N;i++){
  15. if(!prime[i]) a[++js]=i,v[i]=i;
  16. for(int j=1;j<=js;j++){
  17. if(i*a[j]>N) break;
  18. prime[i*a[j]]=1;
  19. v[i*a[j]]=a[j];
  20. }
  21. }
  22. }
  23. main(){
  24. int n=read(),x,ans=1;
  25. pd();
  26. v[1]=1;
  27. for(int i=1;i<=n;i++)
  28. for(int j=i;j!=1;j/=v[j])
  29. c[v[j]]++;
  30. for(int i=1;i<=N;i++)
  31. ans*=(c[i]*2+1),ans%=mod;
  32. printf("%lld",ans%mod);
  33. }

[Violet]樱花的更多相关文章

  1. Luogu1445 [Violet]樱花 ---- 数论优化

    Luogu1445 [Violet]樱花 一句话题意:(本来就是一句话的) 求方程 $\frac{1}{X} + \frac{1}{Y} = \frac{1}{N!}$ 的正整数解的组数,其中$N \ ...

  2. bzoj2721 / P1445 [Violet]樱花

    P1445 [Violet]樱花 显然$x,y>n$ 那么我们可以设$a=n!,y=a+t(t>0)$ 再对原式通分一下$a(a+t)+ax=x(a+t)$ $a^{2}+at+ax=ax ...

  3. 洛谷P1445 [Violet] 樱花 (数学)

    洛谷P1445 [Violet] 樱花 题目背景 我很愤怒 题目描述 求方程 1/X+1/Y=1/(N!) 的正整数解的组数,其中N≤10^6. 解的组数,应模1e9+7. 输入输出格式 输入格式: ...

  4. 「BZOJ2721」「LuoguP1445」 [Violet]樱花(数论

    题目背景 我很愤怒 题目描述 求方程 $\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$ 的正整数解的组数,其中$N≤10^6$. 解的组数,应模$1e9+7$. 输入输出格 ...

  5. Luogu P1445[Violet]樱花/P4167 [Violet]樱花

    Luogu P1445[Violet]樱花/P4167 [Violet]樱花 真·双倍经验 化简原式: $$\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}$$ $$\frac ...

  6. luoguP1445 [Violet]樱花

    链接P1445 [Violet]樱花 求方程 \(\frac {1}{X}+\frac {1}{Y}=\frac {1}{N!}\) 的正整数解的组数,其中\(N≤10^6\),模\(10^9+7\) ...

  7. BZOJ2721或洛谷1445 [Violet]樱花

    BZOJ原题链接 洛谷原题链接 其实推导很简单,只不过我太菜了想不到...又双叒叕去看题解 简单写下推导过程. 原方程:\[\dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1 ...

  8. Luogu1445 [Violet]樱花

    题面 题解 $$ \frac 1x + \frac 1y = \frac 1{n!} \\ \frac{x+y}{xy}=\frac 1{n!} \\ xy=n!(x+y) \\ xy-n!(x+y) ...

  9. Bzoj2721 [Violet]樱花(筛法)

    题面 题解 首先化一下式子 $$ \frac 1x+\frac 1y=\frac 1{n!} \Rightarrow \frac {x+y}{xy}=\frac 1{n!} \Rightarrow ( ...

随机推荐

  1. 开启vmotion,实现虚拟机可以在线迁移的选项

    先决条件: 1.vcenter5.5 2.vmotion服务开启 3.分布式交换机已经部署完毕 4.虚拟机在线迁移必须在web管理下,在vclient不可以

  2. Dynamics CRM 2011 FetchXml QueryExpression LINQ

    Dynamics CRM 2011支持三种查询语句 FetchXml QueryExpression LINQ 查询 功能 保存 FetchXml 支持QueryExpression的所有功能,额外支 ...

  3. 关系数据库域关系演算语言QBE

    QBE: Query By Example 基于屏幕表格的查询语言 查询要求:以填写表格的方式构造查询 用示例元素(域变量)来表示查询结果可能的情况 查询结果:以表格形式显示 QBE操作框架 ...

  4. C# 异常内存信息导出Dump文件

    背景:很多情况下程序崩溃我们只能看到程序抛出来的异常信息,但是有时候异常信息不清不楚我们处理异常还是一头雾水,这种情况下我们就很希望能有种办法获取程序运行时的内存进行调试,查看其中的变量.参数.方法执 ...

  5. spark集群配置以及java操作spark小demo

    spark 安装 配置 使用java来操作spark spark 安装 tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz rm spark-2.4.0-bin-hadoo ...

  6. git commit 提交的时候,出现*** Please tell me who you are. git config --global 。。。问题

    $ git commit -a -m 'v6' *** Please tell me who you are. Run git config --global user.email "you ...

  7. pandas读写excel

    import pandas as pd import numpy as np df = pd.read_csv("result.csv") # csv # df = pd.read ...

  8. 让IE10等支持classList2.0

    chrome24+, firesfox26+起支持classList2.0,即让它同时添加或删除多个类名, toggle方法支持第2个参数,用于强制添加或删除 var div = document.c ...

  9. Android适配器Adapter的学习

    Android中有很多的适配器,首先看看这些适配器的继承结构 这些适配器中,BaseAdapter用的最多,也用的最熟,先放过他,从ArrayAdapter开始 一个listAdapter用来管理一个 ...

  10. obj.get_字段名称_display

    在页面上我们只要这么写就可以直接把字典的值显示出来了 {{ obj.get_level_display }}({{ obj.level }}) obj.get_字段名称_display . model ...