题目链接

这题求[1,n],[1,m]gcd为k的对数。而且没有顺序。

设F(n)为公约数为n的组数个数 
f(n)为最大公约数为n的组数个数

然后在纸上手动验一下F(n)和f(n)的关系,直接套公式就好了。注意要删去重复的。

关于 莫比乌斯反演 的结论

ACdreamers大神的相关博客  莫比乌斯反演   莫比乌斯反演与最大公约数

#include<bits/stdc++.h>
using namespace std;
typedef long long LL; const int maxn=1e6; int prime[maxn+];
bool check[maxn+];
int mu[maxn+]; void init()
{
mu[]=;
int tot=;
for(int i=;i<=maxn;i++)
{
if(!check[i])
{
prime[tot++]=i;
mu[i]=-;
}
for(int j=;j<tot;j++)
{
if(i*prime[j]>maxn) break;
check[i*prime[j]]=true;
if(i%prime[j]==)
{
mu[i*prime[j]]=;
break;
}
else
{
mu[i*prime[j]]=-mu[i];
}
}
}
} int main()
{
int T;
int a,b,c,d,k;
init();
scanf("%d",&T);
for(int kase=;kase<=T;kase++)
{
scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
if(k==)
{
printf("Case %d: 0\n",kase);
continue;
}
b/=k;
d/=k;
if(b>d) swap(b,d);
LL ans=;
for(int i=;i<=b;i++)
ans+=(LL)mu[i]*(b/i)*(d/i);
LL t=;
for(int i=;i<=b;i++)
t+=(LL)mu[i]*(b/i)*(b/i);
ans-=t/;
printf("Case %d: %I64d\n",kase,ans);
}
}

最新文章

  1. 委托、Lambda表达式和事件
  2. Hibernate
  3. MFC 给对话框注册热键
  4. jquery学习笔记:获取下拉框的值和下拉框的txt
  5. 英語版Windows Server 2012 R2を日本語化する手順
  6. python之json
  7. ID(dfs+bfs)-hdu-4127-Flood-it!
  8. 在MySQL中创建实现自增的序列(Sequence)的教程
  9. Qt实战之开发软件数据获取助手(eventFilter处理鼠标按下,event处理鼠标松开)
  10. PHP中对mysql预编译查询语句的一个封装
  11. html5中cookie介绍,封装以及添加,获取,删除
  12. 关于Python 解包,你需要知道的一切
  13. 微信小程序支付,带java源码
  14. selenium chromedriver geckodriver iedriverserver下载
  15. Nginx 优化缓冲区与传输效率
  16. 流控制、FlowControl
  17. Linux md5sum 的用法
  18. java_分解质因数
  19. CocosCreator原生平台退出游戏,暂停和继续
  20. [转]ajQuery的deferred对象详解

热门文章

  1. 学习日记4、datagrid多行删除
  2. (转)Python3 zip() 函数
  3. undo管理
  4. Python——GUI可视化
  5. jQuery将字符串转换为数字
  6. Pikachu漏洞练习平台实验——php反序列化、XXE、SSRF(九)
  7. Python 学习笔记16 类 - 导入
  8. Linux系统的镜像文件iso下载地址
  9. 厉害了,Google大神每天写多少行代码?
  10. hdu5943 Kingdom of Obsession 二分图+打表找规律