题目链接

题意 : 从[a,b]中找一个x,[c,d]中找一个y,要求GCD(x,y)= k。求满足这样条件的(x,y)的对数。(3,5)和(5,3)视为一组样例 。

思路 :要求满足GCD(x,y)=k的对数,则将b/k,d/k,然后求GCD(x,y)=1的对数即可。假设b/k >= d/k ;对于1到b/k中的某个数s,如果s<=d/k,则因为会有(x,y)和(y,x)这种会重复的情况,所以这时候的对数就是比s小的与s互质的数的个数,即s的欧拉函数。至于重复的情况是指:在d/k中可能有大于s的与d/k互质的数,但是当你把这些加上了之后,当你继续在b/k中找完s之后再找比s大的数的时候会产生和之前加上的情况重复的情况。

当s > d/k时,s分解质因数后,质因数的次数不影响结果。我们看另外那个区间有多少个和s不互质(减一下就好了),于是我们只要看另外那个区间中有多少个数是s质因数的倍数就好了。区间[1..a]中 p的倍数 显然有 a/p个。 我们枚举s的质因数利用容斥原理:看另外那个区间有多少个数与s不互质。

容斥原理的具体如下:

区间中与s不互质的个数 = (区间中s的每个质因数的倍数个数)-(区间中s的每两个质因数乘积的倍数)+(区间中s的每3个质因数的成绩的倍数个数)-(区间中s的每4个质因数的乘积)+...

于是问题变成了统计每个数的不同质因数的个数而忽略次数。这个可以用筛法。具体做法如下:

对每个数保存一个真质因数的列表。初始每个列表的长度为0。然后从2开始,分别检查每个数的列表长度,如果列表长度不为0,则这个数是合数,跳过;如果这个长度为0,则我们找到了一个质数,同时再把这个数的倍数(不包含本身)的列表里加入这个数。

参考

 //
#include <iostream>
#include <string.h>
#include <stdio.h> using namespace std ; int a,b,c,d,k,zh[][],sh[] ;
__int64 ans,eu[] ; void eular()
{
eu[] = ;
for(int i = ; i < ; i++)
{
if(!eu[i])
{
for(int j = i ; j < ; j += i)
{
if(!eu[j]) eu[j] = j ;
eu[j] = eu[j] / i * (i-) ;
zh[j][sh[j]++] = i ;
}
}
eu[i] += eu[i-] ;
}
}
__int64 dfs(int s ,int b,int i)
{
__int64 ans1 = ;
for (int j = s ;j < sh[i] ; j++)
{
ans1 += b /zh[i][j] - dfs(j+,b/zh[i][j],i);
}
return ans1;
}
int main()
{
int T ;
scanf("%d",&T) ;
int cas = ;
eular() ;
while(T--)
{
scanf("%d %d %d %d %d",&a,&b,&c,&d,&k) ;
if(k == ){
printf("Case %d: 0\n",cas++) ;
continue ;
}
int maxx = max(b,d) ;
int minn = min(b,d) ;
maxx /= k ;
minn /= k ;
ans = eu[minn] ;
for(int i = minn + ; i <= maxx ; i++)
ans += minn - dfs(,minn,i) ;
printf("Case %d: %I64d\n",cas++,ans) ;
}
return ;
}

HDU 1695 GCD (容斥原理+欧拉函数)的更多相关文章

  1. HDU 1695 GCD(欧拉函数+容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:x位于区间[a, b],y位于区间[c, d],求满足GCD(x, y) = k的(x, ...

  2. HDU 1695 GCD (欧拉函数+容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. hdu 1695 GCD (欧拉函数、容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. hdu 1695 GCD(欧拉函数+容斥)

    Problem Description Given 5 integers: a, b, c, d, k, you're to find x in a...b, y in c...d that GCD( ...

  5. HDU 1787 GCD Again(欧拉函数,水题)

    GCD Again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. HDU 2588 GCD(欧拉函数)

    GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. 题解报告:hdu 2588 GCD(欧拉函数)

    Description The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written ...

  8. hdu 1787 GCD Again (欧拉函数)

    GCD Again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. HDU1695:GCD(容斥原理+欧拉函数+质因数分解)好题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目解析: Given 5 integers: a, b, c, d, k, you're to ...

随机推荐

  1. 试写Python内建函数range()

    还没查阅源码,先试着练手 class my_range(object): def __init__(self, *args): if not args: raise TypeError, 'range ...

  2. 腾讯云 安全组配置及与MySQL 远程登录失败原因浅析

    前言,知道自己腾讯云服务器安全组配置并在安全组里开放了所有端口的用户可以粗略的看看下边的内容,否则就仔细看看吧. 因为有学习及业务需要,我要在腾讯云上安装了CentOS7.2版本的服务器上安装MySQ ...

  3. Logstash+kibana+ ElasticSearch+redis

    这是之前Logstash+kibana+ ElasticSearch+redis 安装时,自己整理的初学者容易看懂的资料,按照以下的步骤也已经完成了安装. 这里有二台服务器: 192.168.148. ...

  4. 在linux下查看内核版本、gcc版本、操作系统多少位等参数

    1. 查看linux版本 cat /etc/issue Ubuntu 11.04 \n \l 2. 查看内核版本 1)cat /proc/version Linux version 2.6.38-13 ...

  5. 可以支持jQuery1.10.1 的 fancybox 1.3.4, 並現在type為Ajax時,也可以定義窗口的大小。

    官網上的 fancybox 1.3.4 太老了,不支持jQuery1.10.1,改動了一下源碼,現在可以支持了. type為Ajax時,也可以定義窗口的大小. $("#ajaxlink&qu ...

  6. 使用 PHP 验证表单数据

    使用 PHP 验证表单数据 首先我们对用户所有提交的数据都通过 PHP 的 htmlspecialchars() 函数处理. 当我们使用 htmlspecialchars() 函数时,在用户尝试提交以 ...

  7. scp实现mac与linux服务器之间文件传输

    1.mac上传文件到linux服务器 scp 文件名 用户名@服务器ip:目标路径如:scp /Users/test/testFile test@xxx.xxx.xxx.xxx:/test/ 2.ma ...

  8. MongoDB Long/Int(长整型)的自增长主键 解决方案

    今朝有幸尝芒果,发现自增长ID类型有多种,唯独没有Long/Int. 一思路:1. 自建一个Collection(表,假设名为:IdentityEntity,其中字段:_id, Key, Value, ...

  9. javascript 数组排序之 sort()

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  10. ccache高速编译工具

    ccache的主页:http://ccache.samba.org distcc的主页:http://distcc.samba.org 1.背景: 在处理一些规模相对较大的工程时,编译花费的时间可能会 ...