51nod 1223 分数等式的数量
来源:互联网 发布:苏联航天机械能力知乎 编辑:程序博客网 时间:2024/05/13 23:45
Description
有这样一个分数等式:1/X + 1/Y = 1/N,(X,Y,N > 0)。给出L,求有多少满足X < Y <= L的等式。
例如:L = 12,满足条件的等式有3个,分别是:1/3 + 1/6 = 1/2, 1/4 + 1/12 = 1/3, 1/6 + 1/12 = 1/4。
Input
输入1个数L(1 <= L <= 10^11)
Output
输出符合条件的等式的数量。
Input示例
12
Output示例
3
Solution
求
化简
即
设
于是
因为
在我知道a和b的情况
设
这里可以用欧拉函数解决,而我用莫比乌斯反演
先忽略i=1的情况,后面减掉即可
设f[d]表示gcd=d的倍数,
为什么这样?自己想,与上面一样的思路
设g[d]表示gcd=d时,
g[1]就是答案
右边括号里的东西可以分块,也就是在程序中枚举i可以分块,然后枚举j,然后枚举(j+k)注意不是k,这时(j+k)可以分块
时间复杂度
Code
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define ll long long#define fo(i,a,b) for(ll i=a;i<=b;i++)#define M 320000using namespace std;ll n,m,ans=0,mu[M];int bz[M],p[M];int main(){ scanf("%lld",&n);m=(int)sqrt(n); mu[1]=1; fo(i,2,316227) { if(!bz[i]) p[++p[0]]=i,mu[i]=-1; fo(j,1,p[0]) { int k=p[j]*i; if(k>316227) break; if(i%p[j]==0) { mu[k]=0;bz[k]=1; break; } bz[k]=1;mu[k]=-mu[i]; } } fo(i,1,316227) mu[i]+=mu[i-1]; for(ll i=1,i1=1;i<=m;i++,i1=min(m,min((ll)sqrt(n/(n/i/i)),(ll)m/(m/i)))) { ll t=0,nn=n/i/i; fo(j,1,m/i) { ll nm=nn/j; for(ll k=j+1,k1=j+1;k<=2*j;k++,k1=min(2*j,nm/(nm/k))) { t+=(nm/k)*(k1-k+1); if(k1==2*j) break; k=k1;if(nm/(k+1)==0) break; } } ans+=(mu[i1]-mu[i-1])*(t); if(i1==m) break; i=i1; } ans-=n/2; printf("%lld",ans);}
1 0
- [51nod 1223]分数等式的数量
- 【51NOD 1223】分数等式的数量
- [51Nod 1223] 分数等式的数量
- 51nod 1223 分数等式的数量
- 51nod 1223 分数等式的数量
- [51nod1223]分数等式的数量
- 51nod1223 分数等式的数量
- 【51nod1223】【分数等式的数量】【莫比乌斯反演】
- [51nod 1139]奇妙等式的解
- 岛屿的数量 51Nod
- 岛屿的数量 51Nod
- 等式数量
- 51nod 1009:数字1的数量
- 51nod 1276:岛屿的数量 (贪心)
- 51NOD 1009 数字1的数量
- 51nod 1009 数字1的数量
- [51nod 1197] 字符串的数量 V2
- 51nod 1009 数字1的数量
- 【GIS】——Tilestache在windows上的安装
- hdu1358(KMP,next数组性质)
- 我的管理之旅——决策与用人
- java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException
- 菜鸟学习Linux 处于查看文件时(包括man page和预览档案),各种查看命令
- 51nod 1223 分数等式的数量
- pat-basic-1041-c语言
- Statement于PreparedStatement
- (二十一)缓冲区操作与目录操作
- HDU 3791 二叉搜索树 (基础题)
- IntelliJ IDEA 2016.3.4(64)使用阿里云maven仓库
- 欢迎使用CSDN-markdown编辑器
- HDU2045_LELE的PRG难题_递推
- 1