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 ...
 
随机推荐
- Python 使用Qt进行开发(三)
			
下面我们实现日期时间框的添加,表示日期时间的文本框可以使用QtWidgets控件下的 QDateEdit() , QTimeEdit() , QDateTime() 三个方法实现. 1,使用QDate ...
 - 搭建ORACLE11g_RAC_单实例_ADG 注意事项
			
搭建ORACLE11g_RAC_单实例_ADG 建库时候的注意事项:实例名为orcl1SYS@orcl1>select instance_name from v$instance; INSTAN ...
 - sklearn—支持向量机
			
SVC介绍: 拟合出来的模型为一个超平面 解决与样本维数无关,适合做文本分类 解决小样本.非线性.高维 是用于分类.回归.孤立点检测的监督学习方法的集合. 优点: 有效的高维空间 维数大于样本数的时候 ...
 - day67—angularJS学习笔记控制器
			
转行学开发,代码100天——2018-05-22 angularJS通过控制器来控制数据流的应用. ng-controller. 控制器中包含属性和函数,其参数引用通过 $scope来执行. 如下文的 ...
 - 14.使用Crunch创建字典----Armitage扫描和利用----设置虚拟渗透测试实验室----proxychains最大匿名
			
使用Crunch创建字典 kali自带的字典 usr/share/wordlists cd Desktop mkdir wordlists cd wordlists/ crunch --help cr ...
 - echars 柱状图 堆叠状态  --》二次封装
			
<template> <!-- 柱状图 堆叠 1. 调用页面引入 import EcharsColumnStack from '@/components/echarsColumnSt ...
 - python+selenium下弹窗alter对象处理01
			
alt.accept() : 等同于单击“确认”或者“OK” alt.dismiss() : ...
 - 所遇Oracle错误代码
			
ORA-00905: 缺失关键字 少了空格或关键字写错 ORA-00922: 选项缺失或无效 错误原因:一般是语句的语法有问题.比如命名不对,关键字写错等等.对于非标准的命名,一般采用双引号来创建 ...
 - [转帖] 百度百科 sino
			
sino https://baike.baidu.com/item/sino/2830?fr=aladdin 百度百科 sinograin 中储粮 (组合词前缀) 编辑 讨论 Sino,就是「中国.东 ...
 - 关于R文件
			
1 什么是R文件 R文件是自动生成的文件,里面保存的是res目录下所有资源的ID. 2 如何使用 2.1 在java代码中使用 txtName = (TextView)findViewById(R.i ...