hdu 4135 Co-prime(容斥)
Co-prime
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2307 Accepted Submission(s): 861
1 10 2
3 15 5
Case #2: 10
In the first test case, the five integers in range [1,10] which are relatively prime to 2 are {1,3,5,7,9}.
题意:求A到B之间的数有多少个与n互质。
首先转化为(1---B)与n互质的个数减去(1--- A-1)与n互质的个数
然后就是求一个区间与n互质的个数了,注意如果是求(1---n)与n互质的个数,可以用欧拉函数,但是这里不是到n,所以无法用欧拉函数。
这里用到容斥原理,即将求互质个数转化为求不互质的个数,然后减一下搞定。
求互质个数的步骤:
1、先将n质因数分解
2、容斥原理模板求出不互质个数ans
3、总的个数减掉不互质个数就得到答案
#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#include<vector>
using namespace std;
#define ll long long
#define N 1000000
ll A,B,n;
vector<ll> v;
ll solve(ll x,ll n)
{
v.clear();
for(ll i=;i*i<=n;i++) //对n进行素数分解
{
if(n%i==)
{
v.push_back(i);
while(n%i==)
n/=i;
}
}
if(n>) v.push_back(n); ll ans=;
for(ll i=;i<( <<v.size() );i++)//用二进制来1,0来表示第几个素因子是否被用到,如m=3,三个因子是2,3,5,则i=3时二进制是011,表示第2、3个因子被用到
{
ll sum=;
ll tmp=;
for(ll j=;j<v.size();j++)
{
if((<<j)&i) //判断第几个因子目前被用到
{
tmp=tmp*v[j];
sum++;
}
}
if(sum&) ans+=x/tmp;//容斥原理,奇加偶减
else ans-=x/tmp;
}
return x-ans;
}
int main()
{
int t;
int ac=;
scanf("%d",&t);
while(t--)
{
scanf("%I64d%I64d%I64d",&A,&B,&n);
printf("Case #%d: ",++ac);
printf("%I64d\n",solve(B,n)-solve(A-,n));
}
return ;
}
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define ll long long
#define N 1000000
ll A,B,n;
ll fac[N];
ll solve(ll x,ll n)
{
ll num=;
for(ll i=;i*i<=n;i++)
{
if(n%i==)
{
fac[num++]=i;
while(n%i==)
n/=i;
}
}
if(n>) fac[num++]=n; ll ans=;
for(ll i=;i<(<<num);i++)
{
ll sum=;
ll tmp=;
for(ll j=;j<num;j++)
{
if((<<j)&i)
{
tmp=tmp*fac[j];
sum++;
}
}
if(sum&) ans+=x/tmp;
else ans-=x/tmp;
}
return x-ans;
}
int main()
{
int t;
int ac=;
scanf("%d",&t);
while(t--)
{
scanf("%I64d%I64d%I64d",&A,&B,&n);
printf("Case #%d: ",++ac);
printf("%I64d\n",solve(B,n)-solve(A-,n));
}
return ;
}
hdu 4135 Co-prime(容斥)的更多相关文章
- HDU 4135 Co-prime(容斥+数论)
Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 题解报告:hdu 4135 Co-prime(容斥定理入门)
Problem Description Given a number N, you are asked to count the number of integers between A and B ...
- HDU 4135 Co-prime(容斥:二进制解法)题解
题意:给出[a,b]区间内与n互质的个数 思路:如果n比较小,我们可以用欧拉函数解决,但是n有1e9.要求区间内互质,我们可以先求前缀内互质个数,即[1,b]内与n互质,求互质,可以转化为求不互质,也 ...
- C - Visible Trees HDU - 2841 -莫比乌斯函数-容斥
C - Visible Trees HDU - 2841 思路 :被挡住的那些点(x , y)肯定是 x 与 y不互质.能够由其他坐标的倍数表示,所以就转化成了求那些点 x,y互质 也就是在 1 - ...
- HDU 5297 Y sequence 容斥 迭代
Y sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5297 Description Yellowstar likes integer ...
- hdu 6053 trick gcd 容斥
http://acm.hdu.edu.cn/showproblem.php?pid=6053 题意:给定一个数组,我们定义一个新的数组b满足bi<ai 求满足gcd(b1,b2....bn)&g ...
- HDU 3970 Harmonious Set 容斥欧拉函数
pid=3970">链接 题解:www.cygmasot.com/index.php/2015/08/17/hdu_3970 给定n 求连续整数[0,n), 中随意选一些数使得选出的 ...
- [HDU4135]CO Prime(容斥)
也许更好的阅读体验 \(\mathcal{Description}\) \(t\)组询问,每次询问\(l,r,k\),问\([l,r]\)内有多少数与\(k\)互质 \(0<l<=r< ...
- HDU 4609 3-idiots FFT+容斥
一点吐槽:我看网上很多分析,都是在分析这个题的时候,讲了半天的FFT,其实我感觉更多的把FFT当工具用就好了 分析:这个题如果数据小,统计两个相加为 x 的个数这一步骤(这个步骤其实就是求卷积啊),完 ...
- HDU 4336 Card Collector(容斥)
题意:要收集n种卡片,每种卡片能收集到的概率位pi,求收集完这n种卡片的期望.其中sigma{pi} <=1; 思路:容斥原理.就是一加一减,那么如何算期望呢.如果用二进制表示,0表示未收集到, ...
随机推荐
- (转)重置Mac OS X管理员密码
忘记Mac管理员密码怎么办?别担心,办法总会有的. [方法一] 开机按住option,选择Recovery HD(Snow Leopard插入光盘开机按住C) Snow Leopard系统:进入后在上 ...
- CMA连续物理内存用户空间映射---(一)
背景: 在多媒体和图像处理等应用中,经经常使用到大块内存,尤其是硬件编解码.须要内核分配大块的物理连续内存. 这里希望通过把从内核分配的连续物理内存映射到用户空间.在用户空间经过处理,又能够入队到驱动 ...
- wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验
wxWidgets刚開始学习的人导引全文件夹 PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...
- 理解prototype、proto和constructor的三角关系
javascript里的关系又多又乱.作用域链是一种单向的链式关系,还算简单清晰:this机制的调用关系,稍微有些复杂:而关于原型,则是prototype.proto和constructor的三角关系 ...
- Web前端开发面试题赋答案
第一部分:用CSS实现布局 让我们一起来做一个页面 首先,我们需要一个布局. 请使用CSS控制3个div,实现如下图的布局. 第二部分:用javascript优化布局 由于我们的用户群喜欢放大看页面 ...
- HQL查询
HQL ,Hibernate Query Language ,是Hibernate查询语言,不直接操作数据表,而是操作实体类,根据实体类和对应数据表中的映射关系,查找数据. 下面是hql的基本步骤: ...
- 关于eclipse几种插件的安装方法
首先这里的安装方法按文件类型和安装方式来分 首先介绍按不同安装方式来分: 1.利用eclipse自带插件安装功能: 以jode插件为例,启动eclipse,help -> Software Up ...
- IP地址的存储和使用
ip地址使用int类型存储,用INET_NTOA()和INET_ATON()转换 mysql'),inet_aton('127.0.0.1'); +-------------------------+ ...
- jQuery自学笔记(五):关于jQuery的遍历
向上遍历 DOM 树 parent() //返回被选元素的直接父元素,该方法只会向上一级对 DOM 树进行遍历. parents() //返回被选元素的所有祖先元素,它一路向上直到文档的根元素 ...
- php 之 文件上传(0523)
如何上传图片: 上传页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...