【bzoj2721】[Violet 5]樱花
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2721
好久没做数学题了,感觉有些思想僵化,走火入魔了。
这道题就是求方程$ \frac{1}{x}+\frac{1}{y}=\frac{1}{n!} $的正整数解个数。
首先我们可以把方程化为$ (x+y)n!=xy $。。。然后就发现搞不出什么了。
但是我们可以考虑换元,因为显然$ x,y>n $,所以我们设$ y=n!+k $,然后我们就可以把方程化为$ (x+n!+k)n!=x(n!+k) $,接下来去括号并整理得:$ (n!)^{2}+kn!=xk $,于是$ x=\frac{(n!)^{2}}{k}+n! $。
我们可以发现,$ x,y,n! $都是正整数,因此由$ y=n!+k $且$ y>n $可得$ k $也是正整数,而由$ x=\frac{(n!)^{2}}{k}+n! $可得$ \frac{(n!)^{2}}{k} $是正整数,所以k必为$ (n!)^2 $一因数。并且$ x,y $和$ k $的值是一一对应的,所以问题就变成了求$ (n!)^2 $的因数个数。
具体做法可以用筛法筛出质数,然后对于每个质数,算出它们的每个幂对答案的贡献。
代码:
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
#define ll long long
#define ull unsigned long long
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
#define lowbit(x) (x& -x)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define eps 1e-18
#define maxn 500010
inline ll read()
{
ll tmp=; char c=getchar(),f=;
for(;c<''||''<c;c=getchar())if(c=='-')f=-;
for(;''<=c&&c<='';c=getchar())tmp=(tmp<<)+(tmp<<)+c-'';
return tmp*f;
}
int p[],mn[];
ll cnt[];
int n,tot=;
void eular(int n)
{
mn[]=;
for(int i=;i<=n;i++){
if(!mn[i])p[++tot]=i,mn[i]=tot;
for(int j=;j<=mn[i]&&i*p[j]<=n;j++)mn[i*p[j]]=p[j];
}
//for(int i=1;i<=n;i++)
// if(p[mn[i]]==i)printf("%d\n",i);
}
int main()
{
n=read();
eular(n);
for(int i=;i<=tot;i++){
cnt[i]=;
for(ll j=p[i];j<=n;j*=p[i])cnt[i]+=n/j;
cnt[i]%=mod;
}
ll ans=;
for(int i=;i<=tot;i++)
ans=ans*(cnt[i]*+)%mod;
printf("%lld\n",ans);
return ;
}
bzoj2721
【bzoj2721】[Violet 5]樱花的更多相关文章
- 【筛法求素数】【质因数分解】bzoj2721 [Violet 5]樱花
http://www.cnblogs.com/rausen/p/4138233.html #include<cstdio> #include<iostream> using n ...
- BZOJ2721 [Violet 5]樱花
先令n! = a: 1 / x + 1 / y = 1 / a => x = y * a / (y - a) 再令 k = y - a: 于是x = a + a ^ 2 / k => ...
- 2018.10.26 bzoj2721: [Violet 5]樱花(数论)
传送门 推一波式子: 1x+1y=1n!\frac 1 x+\frac 1 y=\frac 1 {n!}x1+y1=n!1 =>xy−x∗n!−y∗n!xy-x*n!-y*n!xy−x∗n ...
- 【BZOJ2721】[Violet 5]樱花 线性筛素数
[BZOJ2721][Violet 5]樱花 Description Input Output Sample Input 2 Sample Output 3 HINT 题解:,所以就是求(n!)2的约 ...
- BZOJ_2721_[Violet 5]樱花_数学
BZOJ_2721_[Violet 5]樱花_数学 Description Input Output $\frac{1}{x}+\frac{1}{y}=\frac{1}{m}$ $xm+ym=xy$ ...
- 【BZOJ 2721】 2721: [Violet 5]樱花 (筛)
2721: [Violet 5]樱花 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 599 Solved: 354 Description Input ...
- 2721: [Violet 5]樱花
2721: [Violet 5]樱花 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 547 Solved: 322[Submit][Status][D ...
- bzoj 2721[Violet 5]樱花 数论
[Violet 5]樱花 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 671 Solved: 395[Submit][Status][Discuss ...
- Bzoj2721 [Violet]樱花(筛法)
题面 题解 首先化一下式子 $$ \frac 1x+\frac 1y=\frac 1{n!} \Rightarrow \frac {x+y}{xy}=\frac 1{n!} \Rightarrow ( ...
随机推荐
- 【APIO2016】Fireworks[DP 可并堆维护凸包优化]
4585: [Apio2016]烟火表演 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 100 Solved: 66[Submit][Status] ...
- weblogic新漏洞学习cve-2017-10271
一.原理: 很明显啦,readobject又出来背锅了,一个XML的反序列化漏洞导致的命令执行. 具体原理我看不懂java代码的我也只能学习别人的分析.给出一篇参考文章,写的非常详细: 漏洞原理 二. ...
- Swift - WebKit示例解读
如果你曾经在你的App中使用UIWebView加载网页内容的话,你应该体会到了它的诸多不尽人意之处.UIWebView是基于移动版的Safari的,所以它的性能表现十分有限.特别是在对几乎每个Web应 ...
- log file sync 事件(转)
log file sync log file sync等待时间发生在redo log从log buffer写入到log file期间. 下面对log file sync做个详细的解释. 何时发 ...
- KM算法(最优匹配)
hdu2255 奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- Linux常用命令大全(转载)
最近都在和Linux打交道,这方面基础比较薄弱的我只好买了本鸟哥的书看看,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因, ...
- vscode 代码保存时自动格式化成 ESLint 风格
vscode 的默认的代码格式化 alt+shift+f (windows) 无法通过 eslint 的代码风格检查,,, 比如: 4个空格和2个空格(ESLint) 字符串用单引号(ESLint) ...
- C# get post 的方法
#region GET POST /// <summary> /// Get String data = GetString(URL , "PKEY=" + Pkeyl ...
- MySQL数据的查询注意
mysql数据库的查询结果输出的是一个记录,这一个记录是以字典的形式存储的,所以获取字段时要用字典提取数据的形式获取字段信息: 查询的代码: def query(self): # sql语句 sql ...
- JavaScript高级程序设计第三版学习笔记(一)之数据类型区分详谈
null.NaN.undefined三者的区别是什么? 在初次接触到JavaScript的时候,傻傻的分不清null.NaN.undefined三者到底区别何在,在实际的项目开发中也因为这个问题而困惑 ...