hdu4135题解 容斥
Two integers are said to be co-prime or relatively prime if they have no common positive divisors other than 1 or, equivalently, if their greatest common divisor is 1. The number 1 is relatively prime to every integer.
15) and (1 <=N <= 10
9).
2
1 10 2
3 15 5
Case #1: 5
Case #2: 10HintIn the first test case, the five integers in range [1,10] which are relatively prime to 2 are {1,3,5,7,9}.首先感谢ACM不懈的追求大神的博客,本题解的代码是在该大神的题解的基础上完成的:http://www.cnblogs.com/jiangjing/archive/2013/06/03/3115470.html题目大意:给定整数N,求出多少a到b区间(包含a,b,以下关于区间的描述都包括边界),有多少个数字和N互质。思路:因为数量巨大,如果用辗转相除法会造成超时。我们应该回归互质的定义:两个数字的最大公约数为1称之为互质。故两数互质和两数不互质(印象里面好像叫做互余吧)互为独立事件(这说话的腔调真是受不了。。。)。总而言之,如果我们能求出该区间有多少个数字和N不互质就好了。那么怎么求不互质的个数呢?(设问既有过渡的功能也有引起读者兴趣的作用,哈哈,好了不扯了),好的,我们先把问题改成求1到b区间和N不互质的个数,我们要先找出N的所有质因数,并求出这些质因数相乘可以组合成哪些数字,并求出b除以这些数字的和(不保留小数部分),并且因为有重叠的部分,我们这时候就需要用到互斥定理,例如:b=10,N=48,那么质因数为2,3。这些质因数相乘的组合有:1,2,3,6(可以选择只要其中一个数甚至不选),这时候用互斥定理,答案就是:int(10/-1)+int(10/2)+int(10/3)+int(10/-6),同理,我们可以求出1到a-1区间和N不互质的个数。最难的骨头啃下来了,我们可以求出答案,假设1到b区间和N不互质的个数为f(b),假设1到a-1区间和N不互质的个数为f(a-1),那么题目的答案就是b-f(b)-(a-1-f(a-1)),好的,此处应该有掌声.//hud 4135
#include<cstdio>
#include<iostream>
#include<vector>
#define maxn 100005
using namespace std;
vector <__int64> factor;
__int64 p[maxn];
int len_p;
void getfactor(__int64 x)
{
factor.clear();
for(__int64 i = 2; i * i <= x; i ++)
{
if(x % i == 0)
{
factor.push_back(i);
while(x % i == 0)
{
x /= i;
}
}
}
if(x > 1)
{
factor.push_back(x);
}
}
void getp()
{
p[0] = -1;
len_p = 1;
int len_factor = factor.size();
for(__int64 i = 0; i < len_factor; i ++)
{
int k = len_p;
for(__int64 j = 0; j < k; j ++)
{
p[len_p ++] = factor[i] * p[j] * (-1);
}
}
}
__int64 f(__int64 x)
{
__int64 ans = 0;
for(int i = 1; i < len_p; i ++)
{
ans += (x / p[i]);
}
return ans;
}
int main()
{
int d,cas = 1;
cin >> d;
while(d --)
{
__int64 a, b, n;
scanf("%I64d%I64d%I64d", &a, &b, &n);
getfactor(n);
printf("Case #%d: ", cas ++);
getp();
cout << b - f(b) - (a - 1 - f(a - 1)) << endl;
}
return 0;
}
/*
2
1 10 2
3 15 5
ans:5 10
*/
hdu4135题解 容斥的更多相关文章
- BZOJ 4671 异或图 | 线性基 容斥 DFS
题面 Description 定义两个结点数相同的图 G1 与图 G2 的异或为一个新的图 G, 其中如果 (u, v) 在 G1 与 G2 中的出现次数之和为 1, 那么边 (u, v) 在 G 中 ...
- BZOJ.5407.girls/CF985G. Team Players(三元环计数+容斥)
题面 传送门(bzoj) 传送门(CF) \(llx\)身边妹子成群,这天他需要从\(n\)个妹子中挑出\(3\)个出去浪,但是妹子之间会有冲突,表现为\(i,j\)之间连有一条边\((i,j)\), ...
- [SDOI2009]Bill的挑战——全网唯一 一篇容斥题解
全网唯一一篇容斥题解 Description Solution 看到这个题,大部分人想的是状压dp 但是我是个蒟蒻没想到,就用容斥切掉了. 并且复杂度比一般状压低, (其实这个容斥的算法,提出来源于y ...
- 【hdu4135】【hdu2841】【hdu1695】一类通过容斥定理求区间互质的方法
[HDU4135]Co-prime 题意 给出三个整数N,A,B.问在区间[A,B]内,与N互质的数的个数.其中N<=10^9,A,B<=10^15. 分析 容斥定理的模板题.可以通过容斥 ...
- 【题解】Counting D-sets(容斥+欧拉定理)
[题解]Counting D-sets(容斥+欧拉定理) 没时间写先咕咕咕. vjCodeChef - CNTDSETS 就是容斥,只是难了一二三四五\(\dots \inf\)点 题目大意: 给定你 ...
- 【题解】CF559C C. Gerald and Giant Chess(容斥+格路问题)
[题解]CF559C C. Gerald and Giant Chess(容斥+格路问题) 55336399 Practice: Winlere 559C - 22 GNU C++11 Accepte ...
- [CQOI2014]数三角形 题解(组合数学+容斥)
[CQOI2014]数三角形 题解(数论+容斥) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1328780 链接题目地址:洛谷P3166 BZOJ 350 ...
- 【题解】毒蛇越狱(FWT+容斥)
[题解]毒蛇越狱(FWT+容斥) 问了一下大家咋做也没听懂,按兵不动没去看题解,虽然已经晓得复杂度了....最后感觉也不难 用FWT_OR和FWT_AND做一半分别求出超集和和子集和,然后 枚举问号是 ...
- 【题解】[HAOI2018]染色(NTT+容斥/二项式反演)
[题解][HAOI2018]染色(NTT+容斥/二项式反演) 可以直接写出式子: \[ f(x)={m \choose x}n!{(\dfrac 1 {(Sx)!})}^x(m-x)^{n-Sx}\d ...
- 【题解】P3349 [ZJOI2016]小星星 - 子集dp - 容斥
P3349 [ZJOI2016]小星星 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 小 \(Y\) 是一个心灵手巧 ...
随机推荐
- threejs的坐标渲染和着色
点击查看代码 function createBasic() { // 目标:了解顶点坐标绘制正方形 // 1. 准备 BufferGemotry 缓冲几何图形 // 2. 准备 32 位浮点数的数组, ...
- C 语言编程 — 基本语法
目录 文章目录 目录 前文列表 C 语言 C 语言的版本 C 语言的特点 C 语言的优点 C 语言的缺点 搭建编程环境 基本语法 前文列表 <程序编译流程与 GCC 编译器> C 语言 C ...
- 用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能
OA办公中,业务需要编辑word文档,需要插入另外word文档的功能. 怎么实现编辑word文档插入另外word文档呢? 2 实现方法 通过pageOffice实现简单的在线打开编辑word时, 通过 ...
- 【漏洞复现】金蝶OA-EAS系统 uploadLogo.action 任意文件上传漏洞(0day)
阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站.服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作.利用此文所提供的 ...
- MyBatis延迟加载策略详解
延迟加载就是在需要用到数据的时候才进行加载,不需要用到数据的时候就不加载数据.延迟加载也称为懒加载. 优点:在使用关联对象时,才从数据库中查询关联数据,大大降低数据库不必要开销. 缺点:因为只有当需要 ...
- WPF 设置第二次打开程序直接弹出第一次打开的程序
激活已经打开窗口函数[DllImport("user32.dll")]private static extern bool SetForegroundWindow(IntPtr h ...
- 实战SQL优化(以MySQL深分页为例)
1 准备表结构 CREATE TABLE `student` ( `id` int NOT NULL AUTO_INCREMENT, `user_no` varchar(50) CHARACTER S ...
- 深入浅出Java异常机制
一次对Java异常机制的理解 近期有一个对接三方接口的任务,在这个过程中用到了许多 try-catch 处理,发现自己对异常处理是一知半解,浅浅研究了一下,记录一下,也帮助小伙伴如何正确使用 try- ...
- Linux进程间通信-FIFO(命名管道)
本系列文章主要是学习记录Linux下进程间通信的方式. 常用的进程间通信方式:管道.FIFO.消息队列.信号量以及共享存储. 参考文档:<UNIX环境高级编程(第三版)> 参考视频:Lin ...
- pandas基础--缺失数据处理
pandas含有是数据分析工作变得更快更简单的高级数据结构和操作工具,是基于numpy构建的. 本章节的代码引入pandas约定为:import pandas as pd,另外import numpy ...