Co-prime HDU - 4135_容斥计数
Code:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
const int maxn=100000+233;
typedef long long ll;
int v[maxn],vis[maxn];
int m[maxn];
int num; //质因子个数
ll ans=0;
ll A,B;
ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}
void init(ll N){
int range=(int)sqrt(N),cnt=0;
for(int i=2;i<=range;++i){
if(!vis[i])v[++cnt]=i;
for(int j=1;j<=cnt&&v[j]*i<=range;++i){
vis[i*v[j]]=1;
if(i%v[j]==0)break;
}
}
ll t=N;
for(int i=1;i<=cnt;++i)if(N%v[i]==0)m[++num]=v[i];
for(int i=1;i<=num&&t!=1;++i)while(t%m[i]==0)t/=m[i];
if(t>range)m[++num]=t;
}
void dfs(int cur,ll lcm,int id)
{
if(cur>num)return;
lcm=m[cur]/gcd(m[cur],lcm)*lcm;
if(id)
ans+=(B/lcm)-((A-1)/lcm);
else ans-=(B/lcm)-((A-1)/lcm); for(int i=cur+1;i<=num;++i)
dfs(i,lcm,!id);
}
int main()
{ int T;scanf("%d",&T);
for(int cas=1;cas<=T;++cas)
{
memset(v,0,sizeof(v));
memset(vis,0,sizeof(vis));
memset(m,0,sizeof(m));
num=ans=0;
ll N;
scanf("%lld%lld%lld",&A,&B,&N);
init(N);
for(int i=1;i<=num;++i)
dfs(i,m[i],1);
printf("Case #%d: %lld\n",cas,B-A-ans+1);
}
return 0;
}
Co-prime HDU - 4135_容斥计数的更多相关文章
- How many integers can you find HDU - 1796_容斥计数
Code: #include<cstdio> using namespace std; typedef long long ll; const int R=13; ll a[R]; ll ...
- HDU 4135 容斥
问a,b区间内与n互质个数,a,b<=1e15,n<=1e9 n才1e9考虑分解对因子的组合进行容斥,因为19个最小的不同素数乘积即已大于LL了,枚举状态复杂度不会很高.然后差分就好了. ...
- HDU 2841 容斥 或 反演
$n,m <= 1e5$ ,$i<=n$,$j<=m$,求$(i⊥j)$对数 /** @Date : 2017-09-26 23:01:05 * @FileName: HDU 284 ...
- HDU 1695 容斥
又是求gcd=k的题,稍微有点不同的是,(i,j)有偏序关系,直接分块好像会出现问题,还好数据规模很小,直接暴力求就行了. /** @Date : 2017-09-15 18:21:35 * @Fil ...
- HDU 4059 容斥初步练习
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...
- 【BZOJ 4455】 [Zjoi2016]小星星 容斥计数
dalao教导我们,看到计数想容斥……卡常策略:枚举顺序.除去无效状态.(树结构) #include <cstdio> #include <cstring> #include ...
- 数学(容斥计数):LNOI 2016 方
Description 上帝说,不要圆,要方,于是便有了这道题.由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形 上帝把我们派到了一个有N行M列的方格图上,图上一共有(N+1)×(M+1) ...
- Codeforces.997C.Sky Full of Stars(容斥 计数)
题目链接 那场完整的Div2(Div1 ABC)在这儿.. \(Description\) 给定\(n(n\leq 10^6)\),用三种颜色染有\(n\times n\)个格子的矩形,求至少有一行或 ...
- 一本通 1783 矩阵填数 状压dp 容斥 计数
LINK:矩阵填数 刚看到题目的时候感觉是无从下手的. 可以看到有n<=2的点 两个矩形. 如果只有一个矩形 矩形外的方案数容易计算考虑 矩形内的 必须要存在x这个最大值 且所有值<=x. ...
随机推荐
- 2767 Proving Equivalences 至少加几条边让全部图变成强连通模板题
#include<stdio.h> #include<string.h> #define N 21000 struct node { int u,v,next; }bian[N ...
- 0709关于mysql优化思路【何登成】
转自 http://isky000.com/database/mysql-performance-tuning-sql 优化目标 减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所 ...
- cogs 983. [NOIP2003] 数字游戏
983. [NOIP2003] 数字游戏 ★☆ 输入文件:numgame.in 输出文件:numgame.out 简单对比时间限制:1 s 内存限制:128 MB 题目描述 丁丁最近沉 ...
- 基于java注解实现自己的orm框架
ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关系. 现在常见的 ...
- 自己定义ShareSDK分享平台界面
自己定义ShareSDK分享平台界面 执行效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2FvX2NodW4=/font/5a6L5L2T/fo ...
- POJ 2375
BFS+强连通.输出max(缩点后出度为0的点数,缩点后入度为0的点数). #include <cstdio> #include <iostream> #include < ...
- 18110 Koishi's travel, Satori's travel
18110 Koishi's travel, Satori's travel 该题有题解 时间限制:4000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: 不限定 ...
- 11153 kill boss
11153 kill boss 时间限制:1000MS 内存限制:65535K提交次数:1090 通过次数:340 题型: 编程题 语言: G++;GCC Description Acmer最近 ...
- 出错Can't convert 'WebElement' object to str implicitly
- DotNetBar.Bar菜单的使用
DotNetBar.Bar菜单的使用 老帅 在C#中使用控件DevComponents.DotNetBar.Bar时,怎样设计菜单呢? 1.拖放生成一个菜单容器 拖放一个D ...