ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LJJ爱数数

2021-04-05 22:05:07  阅读:233  来源: 互联网

标签:数数 LJJ gcd limits dfrac sum sqrt leq


VI.LJJ爱数数

题目给出要求这样的东西

\(\dfrac{1}{a}+\dfrac{1}{b}=\dfrac{1}{c}\)

开始胡搞

\(\begin{aligned}\dfrac{1}{a}+\dfrac{1}{b}&=\dfrac{1}{c}\\\dfrac{a+b}{ab}&=\dfrac{1}{c}\\\dfrac{ab}{a+b}&=c\\(a+b)c&=ab\\ac+bc&=ab\\c^2+ac+bc&=ab+c^2\\c^2&=ab+c^2-ac-bc\\c^2&=(a-c)(b-c)\end{aligned}\)

设\((a-c)=x,(b-c)=y\)。如果\(\gcd(a,b,c)> 1\)的话,则一定满足\(\gcd(a,b,c)|a,\gcd(a,b,c)|b,\gcd(a,b,c)|c\),则又有\(\gcd(a,b,c)|(a-c),\gcd(a,b,c)|(b-c)\),最终有\(\gcd(x,y)>1\)。反之亦然。

这样,只要保证\(\gcd(x,y)=1\)即可。

这样的话,如果将\(c^2\)的全部质因子分配给\(a-c\)和\(b-c\)的话,相同的质因子必然全部分给了一个数,不然必有\(\gcd(x,y)>1\)。

因此,必有\(x,y\)为完全平方数。

我们就设\(i=\sqrt{x},j=\sqrt{y}\)。则有\(c=ij\)。

因为有\(n\)这个限制,我们必有\(\max(a,b)\leq n\),不妨设\(a\geq b\),则必有\(x\geq y,i\geq j\)。

如果我们枚举\(i\)的话,\(j\)就可以是所有满足\(c\leq n,j\leq i\),且\(\gcd(i,j)=1\)的值。

我们看\(j\)最多可以在什么范围内取。必有\(x+c\leq n\),即\(i^2+ij\leq n\),即\(j\leq \dfrac{n}{i}-i\)。

同时,为了避免重复计算,我们还有限制\(j<i\)。

这样的话,\(j\)的上限就是\(\min(\dfrac{n}{i}-i,i-1)\)。设为\(b_i\)。

则我们要求\(\sum\limits_{i=1}^{\sqrt{n}}\sum\limits_{j=1}^{b_i}[\gcd(i,j)=1]\)

老套路了吧。不过注意,这回\(j\)的上限\(b_i\)与\(i\)有关,因此不能直接把它变成下取整的形式,必须保留这个东西。

\(\sum\limits_{i=1}^{\sqrt{n}}\sum\limits_{j=1}^{b_i}[\gcd(i,j)=1]=\sum\limits_{i=1}^{\sqrt{n}}\sum\limits_{j=1}^{b_i}\sum\limits_{x|i,x|j}\mu(x)=\sum\limits_{x=1}^{\sqrt{n}}\mu(x)\sum\limits_{x|i}\left\lfloor\dfrac{b_i}{x}\right\rfloor\)

直接没有任何技术含量地暴力即可。复杂度为\(\sum_{i=1}^{\sqrt{n}}(\dfrac{\sqrt{n}}{i})=\sqrt{n}\log n\)

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6;
int n,mu[N+5],pri[N+5],ans;
void init(){
	mu[1]=1;
	for(int i=2;i<=N;i++){
		if(!pri[i])pri[++pri[0]]=i,mu[i]=-1;
		for(int j=1;j<=pri[0]&&i*pri[j]<=N;j++){
			pri[i*pri[j]]=true;
			if(!(i%pri[j]))break;
			mu[i*pri[j]]=-mu[i];
		}
	}
}
signed main(){
	scanf("%lld",&n),init();
	for(int i=1;i*i<=n;i++)if(mu[i])for(int j=i;j*j<=n;j+=i)ans+=mu[i]*((min(j-1,(n/j)-j))/i);
	printf("%lld\n",ans*2+1);
	return 0;
}

标签:数数,LJJ,gcd,limits,dfrac,sum,sqrt,leq
来源: https://www.cnblogs.com/Troverld/p/14619669.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有