莫比乌斯反演:可参考论文:《POI XIV Stage.1 《Queries》解题报告By Kwc-Oliver》

求莫比乌斯函数mu[i]:(kuangbin模板)

http://www.cnblogs.com/kuangbin/archive/2013/08/21/3273440.html

void Moblus()
{
memset(check,false,sizeof(check));
mu[] = ;
int tot = ;
for(int i = ; i <= MMX; i++)
{
if( !check[i] )
{
prime[tot++] = i;
mu[i] = -;
}
for(int j = ; j < tot; j++)
{
if(i * prime[j] > MMX) break;
check[i * prime[j]] = true;
if( i % prime[j] == )
{
mu[i * prime[j]] = ;
break;
}
else
{
mu[i * prime[j]] = -mu[i];
}
}
}
}

本题题意:0<=x<=b,0<=y<=d,求满足gcd(x,y)=k这样的数对(x,y)的数量  ((x,y)和(y,x)算一个)

参考论文提供的公式(自己推不粗来T^T),可以得出:

注意:这里得到的Ans是有序的,即(x,y)和(y,x)算两个

所以本题最终的结果应该是Result=G(b,d)-(G(b,b)/2)

画个图就能看出来:

 #include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
#define LL long long
#define MMX 1000010
#define mian main
int mu[MMX];
LL n;
bool check[MMX];
int prime[MMX]; void Moblus()
{
memset(check,false,sizeof(check));
mu[] = ;
int tot = ;
for(int i = ; i <= MMX; i++)
{
if( !check[i] )
{
prime[tot++] = i;
mu[i] = -;
}
for(int j = ; j < tot; j++)
{
if(i * prime[j] > MMX) break;
check[i * prime[j]] = true;
if( i % prime[j] == )
{
mu[i * prime[j]] = ;
break;
}
else
{
mu[i * prime[j]] = -mu[i];
}
}
}
} int mian()
{
int T;
cin>>T;
Moblus();
for (int zy=; zy<=T; zy++)
{
int a,b,c,d,k;
cin>>a>>b>>c>>d>>k;
if(k == )
{
cout<<"Case "<<zy<<": 0"<<endl;
}
else
{
if (b>d) swap(b,d); //assume b<d
b=b/k;
d=d/k; LL ans1 = ;
for(int i = ; i <= b; i++) //G(b,d)
ans1 += (LL)mu[i]*(b/i)*(d/i);
LL ans2 = ;
for(int i = ; i <= b; i++) //G(b,b)
ans2 += (LL)mu[i]*(b/i)*(b/i);
ans1 -= ans2/; cout<<"Case "<<zy<<": "<<ans1<<endl;
}
}
}

PS:还有用容斥原理做的,表示看不懂orz

http://blog.csdn.net/yang_7_46/article/details/9072533

http://blog.csdn.net/shiren_Bod/article/details/5787722

hdu1695 莫比乌斯反演的更多相关文章

  1. HDU-1695 莫比乌斯反演

    这里学习一下莫比乌斯反演 翻看了很多书,发现莫比乌斯反演,准确来说不是一种固有的公式,而是一种法则. 我们定义F(n),为f(d)的和函数,而定义f(n)为某儿算术函数. 反演公式1:反演n的因子时 ...

  2. hdu1695(莫比乌斯反演模板)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意: 对于 a, b, c, d, k . 有 x 属于 [a, b],  y 属于 [c, ...

  3. hdu1695(莫比乌斯反演+容斥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目是求 在区间[a,b]选一个数x,区间[c,d]选一个数y,求满足gcd(x,y) = k ...

  4. hdu1695莫比乌斯反演模板题

    hdu1695 求1<=i<=n&&1<=j<=m,gcd(i,j)=k的(i,j)的对数 最后的结果f(k)=Σ(1<=x<=n/k)mu[x]* ...

  5. 【HDU1695】GCD(莫比乌斯反演)

    [HDU1695]GCD(莫比乌斯反演) 题面 题目大意 求\(a<=x<=b,c<=y<=d\) 且\(gcd(x,y)=k\)的无序数对的个数 其中,你可以假定\(a=c= ...

  6. hdu1695(容斥 or 莫比乌斯反演)

    刚开始看题,想了一会想到了一种容斥的做法.复杂度O( n(3/2) )但是因为题目上说有3000组测试数据,然后吓尿.完全不敢写. 然后想别的方法. 唉,最近精神有点问题,昨天从打完bc开始想到1点多 ...

  7. hdu1695 GCD(莫比乌斯反演)

    题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...

  8. HDU1695 GCD(莫比乌斯反演)

    传送门 看了1个多小时,终于懂了一点了 题目大意:给n,m,k.求gcd(x,y) = k(1<=x<=n, 1<=y<=m)的个数 思路:令F(i)表示i|gcd(x,y)的 ...

  9. hdu1695(莫比乌斯反演)

    传送门:GCD 题意:求[1,n],[1,m]gcd为k的对数. 分析:莫比乌斯入反演门题,gcd(x,y)==k等价于gcd(x/k,y/k)==1,求出[1,n][1,m]互质的对数,在减去[1, ...

随机推荐

  1. Colorable Fantasy UI

    Colorable Fantasy UI URL:https://www.assetstore.unity3d.com/#/content/7563 环境要求 Requires Unity 4.0.1 ...

  2. u3d 模型ID配置

    换模型为什么要改代码 0.0 你没有逻辑ID->模型的配置么. 做2个配置.. 分别是角色的ID对应模型路径. 然后是里面的动画名对应真实动画名. 比如 ID=1 path = "xx ...

  3. Fitnesse初体验

    FitNesse是一套软件开发协作工具 FitNesse是帮助大家加强软件开发过程中的协作的工具.能够让客户.测试人员和开发人员了解软件要做成什么样,帮助建议软件最终是否达到了设计初衷. 什么是Fit ...

  4. 测试杂感:Bug Bash

    缺陷大扫除(Bug Bash)是一项短期的全员测试活动.在微软,许多开发团队会在里程碑(milestone)的末期执行缺陷大扫除.程序员.测试员.程序经理.内部用户.市场人员在1~3天的时间窗口中,运 ...

  5. You are note Hk

    直接打开是forbidden  最后一句话提示 于是改包 第二次还是修改包 Mozilla/5.0 (MSIE 7.0; Windows NT 6.0;.NET CLR 9.9)

  6. 使用javascript获取url中的参数

    方法一: //取url参数 var type = request("type") function request() { var query = location.search; ...

  7. Open Sans字体兼容问题解决办法[font-face]

    参考:http://www.tantengvip.com/2014/11/open-sans/ 1.font-face使用方法 font-face是CSS3中的一个模块,主要是把自定义的Web字体嵌入 ...

  8. C语言 二级指针内存模型③

    //二级指针内存模型③ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #incl ...

  9. 广州传智博客黑马训练营.Net15期

    广州传智博客黑马训练营.Net15期 7 张扬波 MVC大项目 6 张扬波 MVC 3 胡凌浩 HTML&JS 2 基础加强+三层 5 张扬波 企业站点(asp.net)&EF 4 江 ...

  10. JPush (极光推送) For Xamarin.Android

    官方教程上讲的是 GCM (Google Cloud Messaging) , 不过 GFW 是 GCM 过不去的坎. 极光推送 JPush 是国内的一个不错的替代方案. JPush 提供的 API ...