套路题。考虑设函数 F(i):
- F(i)=1,∃j∈[1,n]∩N+,aj∣i。
- F(i)=0,∀j∈[1,n]∩N+,aj∤i。
然后发现 (i,j) 为 Good-Pairs 的充要条件是 F(gcd(ai,aj))=1。因此答案为:
i=1∑nj=i+1∑nF(gcd(ai,aj))
考虑套路:
g=1∑ni=1∑nj=i+1∑nF(gcd(ai,aj))[gcd(ai,aj)=g]
怎么变成了 O(n3)?没关系!
g=1∑ni=1∑nj=i+1∑nF(g)[gcd(ai,aj)=g]
g=1∑nF(g)i=1∑nj=i+1∑n[gcd(ai,aj)=g]
令 G(g) 表示 i=1∑nj=i+1∑n[gcd(ai,aj)=g] 的值。此时答案为:
g=1∑nF(g)G(g)
问题变为求 G(g) 的值。前几天不是刚做了一个一模一样的题吗?
于是在调和级数时间复杂度内解决问题(O(nlogn))。
喜欢的话,留下你的评论吧~