hdu 4135 a到b的范围中多少数与n互质(容斥)
Co-prime
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4135
input
The first line on input contains T (0 < T <= 100) the number of test cases,
each of the next T lines contains three integers A, B, N where (1 <= A <= B <= 1015) and (1 <=N <= 109).
题解:先求出n的所有质因数,因为n最大为1e9所以最多10个
利用二进制来模拟是否乘上某个质因数,例如有个n为2*3*5=30
1-x中共有ans个数与其互质 ans=-x/2-x/3-x/5+x/6+x/10+x/15-x/30
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
long long fa[20];
long long factor(long long x)
{
long long num=0;
for(long long i=2;i*i<=x;i++)
{
if(x%i==0)
{
fa[num++]=i;
while(x%i==0)x/=i;
}
}
if(x>1)fa[num++]=x;
return num;
}
long long un(long long x,long long num)
{
long long res=0;
for(long long i=0;i<(1<<num);i++)
{
long long g=1,k=0;
for(long long j=0;j<num;j++)
{
if(i&(1<<j))
g*=fa[j],k++;
}
if(k%2)
res-=x/g;
else
res+=x/g;
}
return res;
}
int main()
{
long long T,n,i=1;
long long a,b,ans;
scanf("%I64d",&T);
while(T--)
{
scanf("%I64d %I64d %I64d",&a,&b,&n);
long long num=factor(n);
ans=un(b,num)-un(a-1,num);
printf("Case #%I64d: ",i++);
printf("%I64d\n",ans);
}
return 0;
}
hdu 4135 a到b的范围中多少数与n互质(容斥)的更多相关文章
- hdu 4336 Card Collector —— Min-Max 容斥
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4336 bzoj 4036 的简单版,Min-Max 容斥即可. 代码如下: #include<cst ...
- hdu 4135 [a,b]中n互质数个数+容斥
http://acm.hdu.edu.cn/showproblem.php?pid=4135 给定一个数n,求某个区间[a,b]内有多少数与这个数互质. 对于一个给定的区间,我们如果能够求出这个区间内 ...
- HDU 4135
http://acm.hdu.edu.cn/showproblem.php?pid=4135 求[A,B]内与N互素的数字个数 首先对N分解质因数,对于一个质因数,1-n与它不互素的数字个数是n/(这 ...
- 容斥 - HDU 4135 Co-prime
Co-prime Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4135 推荐: 容斥原理 Mean: 给你一个区间[l,r]和一 ...
- 【容斥】HDU 4135 Co-prime
acm.hdu.edu.cn/showproblem.php?pid=4135 [题意] 询问[a,b]中与n互质的数有多少个 [思路] 考虑[1,m]中与n互质的数有多少个,答案就是query(b) ...
- [容斥原理] hdu 4135 Co-prime
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4135 Co-prime Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 4135 容斥
问a,b区间内与n互质个数,a,b<=1e15,n<=1e9 n才1e9考虑分解对因子的组合进行容斥,因为19个最小的不同素数乘积即已大于LL了,枚举状态复杂度不会很高.然后差分就好了. ...
- 【hdu 4135】Co-prime
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=4135 [题意] 让你求出[a..b]这个区间内和N互质的数的个数; [题解] 利用前缀和,求出[1 ...
- HDU 4135 Co-prime(容斥原理)
Co-prime 第一发容斥,感觉挺有意思的 →_→ [题目链接]Co-prime [题目类型]容斥 &题意: 求(a,b)区间内,与n互质的数的个数. \(a,b\leq 10^{15}\) ...
随机推荐
- org.hibernate.NonUniqueObjectException
错误如下: 2017-3-29 15:17:52~ERROR~org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV ...
- MongoDB数据库简单操作
之前学过的有mysql数据库,现在我们学习一种非关系型数据库 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数 ...
- c/c++ 标准顺序容器 容器的访问,删除 操作
c/c++ 标准顺序容器 容器的访问,删除 操作 pop_front:vector,string不支持 pop_back:forward_list不支持 知识点 1,front, back, at 成 ...
- c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树
c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树 最小生成树(Minimum Cost Spanning Tree)的概念: 假设要在n个城市之间建立公路,则连通n个城市只需要n-1条线路 ...
- [Hive_add_6] Hive 实现 Word Count
0. 说明 Hive 通过 explode()函数 和 split()函数 实现 WordConut 1. Hive 实现 Word Count 方式一 1.1 思路 将每一行文本变为 Array 数 ...
- 【PAT】B1012 数字分类
注意逻辑的描述,只要认真看题,就能做对,如果自己结果一直不正确,请仔细推一下样例结果 #include<stdio.h> int arr[1005]; int main(){ int N, ...
- jenkins 构建到最后报权限的问题
参考链接 https://blog.csdn.net/sinat_25306771/article/details/54633921 近整理虚拟机的密码 把Jenkins构建相关的远程执行脚本的服 ...
- 《Java大学教程》--第1章 步入Java世界
1.2 软件:用于计算机执行的指令的集合称之为程序(program).单个程序或者一组程序称之为软件(software)1.3 编译:计算机的语言称为机器码(machine code).用编译器(co ...
- Spring 的application.properties项目配置与注解
一.项目结构介绍 如上图所示,Spring Boot的基础结构共三个文件: src/main/java 程序开发以及主程序入口 src/main/resources 配置文件 src/test/ja ...
- 【转】CocoaPods的使用教程
转载自:https://www.jianshu.com/p/dfe970588f95 前言 前几天发布我的开源库<最简单方便的iOS轮播开源库:JYCarousel>到CocoaPods的 ...