luoguP1445 [Violet]樱花
链接P1445 [Violet]樱花
- 求方程 \(\frac {1}{X}+\frac {1}{Y}=\frac {1}{N!}\) 的正整数解的组数,其中\(N≤10^6\),模\(10^9+7\)。
- 化简单一下$$xy-n!(x+y)=0$$
- 因式分解一下$$(x-n!)*(y-n!)=(n!)^2$$
- 设\(a=x-n!,b=y-n!\),那么\(a*b=(n!)^2\)
- 也就是\(a,b\)对应了唯一一组\(x,y\),所以问题转化成了:求方程 \(a*b=(n!)^2\) 的正整数解的组数。
- 考虑唯一分解定理,$$(n!)^2=\prod p_i^{2*c_i}$$
- 所以线性筛后分解\(n!\),答案就是\(\prod (2*c_i+1)\)。
#include<bits/stdc++.h>
#define R register int
#define ll long long
using namespace std;
const int mod=1e9+7;
const int N=1000001;
int n,tot,ans,c[N],Mark[N],prm[N];
int gi(){
R x=0,k=1;char c=getchar();
while((c<'0'||c>'9')&&c!='-')c=getchar();
if(c=='-')k=-1,c=getchar();
while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();
return x*k;
}
int main(){
n=gi(),ans=1;
for(R i=2;i<=n;++i){
if(!Mark[i])prm[++tot]=i;
for(R j=1;j<=tot&&prm[j]*i<=n;++j){
Mark[prm[j]*i]=1;
if(i%prm[j]==0)break;
}
}
for(R p=1;p<=tot;++p){
R i=prm[p];
for(R j=i;j<=n;j+=i){
R x=j;
while(x%i==0)c[i]++,x/=i;
}
}
for(R i=1;i<=n;++i)c[i]=(c[i]<<1)+1;
for(R i=1;i<=n;++i)ans=1ll*ans*c[i]%mod;
cout<<ans<<endl;
return 0;
}
luoguP1445 [Violet]樱花的更多相关文章
- 「BZOJ2721」「LuoguP1445」 [Violet]樱花(数论
题目背景 我很愤怒 题目描述 求方程 $\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$ 的正整数解的组数,其中$N≤10^6$. 解的组数,应模$1e9+7$. 输入输出格 ...
- Luogu1445 [Violet]樱花 ---- 数论优化
Luogu1445 [Violet]樱花 一句话题意:(本来就是一句话的) 求方程 $\frac{1}{X} + \frac{1}{Y} = \frac{1}{N!}$ 的正整数解的组数,其中$N \ ...
- 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 ...
- 洛谷P1445 [Violet] 樱花 (数学)
洛谷P1445 [Violet] 樱花 题目背景 我很愤怒 题目描述 求方程 1/X+1/Y=1/(N!) 的正整数解的组数,其中N≤10^6. 解的组数,应模1e9+7. 输入输出格式 输入格式: ...
- Luogu P1445[Violet]樱花/P4167 [Violet]樱花
Luogu P1445[Violet]樱花/P4167 [Violet]樱花 真·双倍经验 化简原式: $$\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}$$ $$\frac ...
- BZOJ2721或洛谷1445 [Violet]樱花
BZOJ原题链接 洛谷原题链接 其实推导很简单,只不过我太菜了想不到...又双叒叕去看题解 简单写下推导过程. 原方程:\[\dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1 ...
- Luogu1445 [Violet]樱花
题面 题解 $$ \frac 1x + \frac 1y = \frac 1{n!} \\ \frac{x+y}{xy}=\frac 1{n!} \\ xy=n!(x+y) \\ xy-n!(x+y) ...
- Bzoj2721 [Violet]樱花(筛法)
题面 题解 首先化一下式子 $$ \frac 1x+\frac 1y=\frac 1{n!} \Rightarrow \frac {x+y}{xy}=\frac 1{n!} \Rightarrow ( ...
- [Violet]樱花
题目链接 洛谷 狗粮版 前置技能 初中基础的因式分解 线性筛 \(O(nlog)\)的分解质因数 唯一分解定理 题解 首先来分解一下式子 \[\frac{1}{x}+\frac{1}{y}=\frac ...
随机推荐
- java 栈和栈帧
文章转载自:http://www.tuicool.com/articles/URZrMnb jvm为每个新创建的线程都分配一个堆栈.堆栈以帧为单位保存线程的状态.jvm对堆栈只进行两种操作:以帧为单位 ...
- Ubuntu - apt 下载源设置为阿里的源
# 备份 sources.list cp /etc/apt/sources.list /etc/apt/sources.list.bak # 切换为阿里的源 echo "deb http:/ ...
- C#通用类库
http://www.cnblogs.com/feiyangqingyun/archive/2010/12/20/1911630.html
- php5.4编译安装--nginx
1.下载源码包 wget 网址/源码包2.解压源码包 tar -zxvf 源码包3.创建一个安装目录 mkdir /usr/local/php4.进入解压后的目录中,初始化安装环境./configur ...
- Asp .Net Mvc在DeBug模式下设置自定义IP
首先打开所在项目下的.vs文件(查看隐藏文件) 打开config下的applicationhost.config文件 往下拖大概100多行的位置,复制一下binding,然后设置本地ip,如果是设置i ...
- Nil Channels Always Block(Go语言中空管道总是阻塞)
译自:https://www.godesignpatterns.com/2014/05/nil-channels-always-block.html 原作者:Alex Lockwood 在本篇文章中, ...
- Java基础之 多线程
一.创建多线程程序的第一种方式: 继承(extends) Thread类 Thread类的子类: MyThread //1.创建一个Thread类的子类 public class MyThread e ...
- Nginx/Nginx基础学习
Nginx与node.js 一.Nginx与Node.js Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡. ...
- 第五周课程总结&试验报告(三
实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...
- SwipeRefreshLayout和RecyclerView类
1 SwipeRefreshLayout和RecyclerView之间的关系 内容栏上下滚动是RecyclerView控制的,只有当内容栏滑动到最顶上时,再也拉不动了的时候,这个时候将动作交给Swip ...