加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

hdu 1695 莫比乌斯反演

发布时间:2020-12-13 20:04:59 所属栏目:PHP教程 来源:网络整理
导读:hdu 1695莫比乌斯反演 题意: 给出a,b,c,d,k,求满足a = x = b c = y = d gcd(x,y)=k 的数对(x,y)的对数。 限制: a=c=1; 0 b,c = 1e5; (n1,n2) 和 (n2,n1) 算为同种情况 思路: 实际上是求满足1 = x = b/k 1 = y = d/k gcd(x,y)=1 的 数对(x,y)的对数。 莫比
hdu 1695 莫比乌斯反演
题意: 给出a,b,c,d,k,求满足a <= x <= b && c <= y <= d && gcd(x,y)=k 的数对(x,y)的对数。

限制:
a=c=1; 0 < b,c <= 1e5; (n1,n2) 和 (n2,n1) 算为同种情况

思路:
实际上是求满足1 <= x <= b/k && 1 <= y <= d/k && gcd(x,y)=1 的 数对(x,y)的对数。
莫比乌斯反演入门题
设f(k)为gcd(x,y)=k的数对(x,y)的对数,我们要求的是f(1)
设F(k)为gcd(x,y)为k的倍数的数对(x,y)的对数,可以想到F(k)=floor(b/k)*floor(d/k),
由莫比乌斯反演得:
令lim=min(b/k,d/k)
f(1)=mu[1]*F(1) + mu[2]*F[2] + ... + mu[lim]*F(lim)
由于(n1,n2)和(n2,n1)算为同1种情况,所以最后结果还要减掉重复的情况。

ps:这道题还可以用容斥做。


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读