求有多少對a和b滿足a<=b且l<=[a,b]<=r
區間[l,r]答案等於[1,r]-[1,l-1]
a<=b暫且不考慮。為了方便,接下來都不寫下取整,出現除法即為整除。 ∑n
i=1∑
nj=1
[ij(
i,j)
<=n]
∑nd=1∑n
i=1∑
nj=1
[(i,
j)=d
]∗[i
jd<=n]
設i=i』d,j=j』d ∑n
d=1∑
ni′=
1∑nj
′=1[
(i′,
j′)=
1]∗[
i′j′
d<=n]
我們反演一下,設k=(i』,j』),i』=i」k,j』=j」k ∑n
k=1μ
(k)∗
∑ni′
=1∑n
j′=1
∑nd=
1[i′
j′k2
d<=n]
後面部分相當於乙個子問題求多少對(a,b,c)滿足abc<=n
設a<=b<=c,則
a<=n1
3 且b
<=na
−−√
c的範圍可以直接得到了。
因為原本abc是無序的,但是其實我們不能直接乘上3!,還需要討論a=b=c或a=b!=c或a!=b=c三種情況。
最後注意沒有考慮a<=b因此求出來無序,可以加上所有a=b的情況再除以2
#include
#include
#include
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const int maxn=3000000+10;
int pri[maxn],mu[maxn];
bool bz[maxn];
int i,j,k,top;
ll n,m,l,t,ans;
void prepare()
mu[i*pri[j]]=-mu[i];}}
}ll calc(ll n)
t-=5;
}return t;
}ll getans(ll n)
l=(l+n)/2;
return l;
}int main()
51nod 1419 最小公倍數挑戰
1419 最小公倍數挑戰 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 幾天以前,我學習了最小公倍數。玩得挺久了,想換換口味。我不想用太多的數字,我想從1到n中選三個數字 可以相同 使得他們的最小公倍數最大。input 單組測試資料。第一行...
51nod 1419 最小公倍數挑戰
原題鏈結 1419 最小公倍數挑戰 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 幾天以前,我學習了最小公倍數。玩得挺久了,想換換口味。我不想用太多的數字,我想從1到n中選三個數字 可以相同 使得他們的最小公倍數最大。input 單組測試資...
51nod 1419 最小公倍數挑戰
幾天以前,我學習了最小公倍數。玩得挺久了,想換換口味。我不想用太多的數字,我想從1到n中選三個數字 可以相同 使得他們的最小公倍數最大。input 單組測試資料。第一行有乙個整數n 1 n 1,000,000 output 輸出乙個整數表示選三個數字的最大的最小公倍數。input示例 9 7outp...