【xsy2504】farm 容斥原理
题目大意:给你三个数$n,m,s$,满足$n,m,s≤10^{18}$且最大质因数均不大于$10^6$。
问你存在多少个整数$k$,满足$0≤k≤m$,且$(k,0)$,$(0,n)$,$(x,y)$组成的三角形面积为$s$,其中$x,y$均为整数。
同时,问你存在多少个整数$p$,满足$0≤p<n$,且$(0,0)$,$(0,p)$,$(x,y)$组成的三角形面积为$s$,其中$x,y$均为整数。
请输出两个问题的和。
不超过1000组数据。
对于第一个问题,我们列出三角形面积的式子
s=(s黄+s灰+s蓝+s红)-s灰-s红-s蓝
$s=|\frac{1}{2}nk-\frac{1}{2}x(n-y)-xy-\frac{1}{2}y(k-x)|$
经过化简,有$|k(y-n)+nx|=2s$
若方程有整数解,则有$gcd(k,n)|2s$
我们设$N[i]$表示数字$n$中出现了多少个质因数$p[i],K[i],S[i]$同理。
若$N[i]>S[i]$,那么有$K[i]≤S[i]$。
基于这个性质,我们就可以通过容斥原理来求了,详见代码。
考虑第二个问题,第二个问题显然是求$s$的约数个数,随便搜一下就可以了。
时间复杂度:$O(2^{16}+\sigma(10^{18}))$
#include<bits/stdc++.h>
#define MM 1000005
#define NN 80000
#define L long long
using namespace std; L pow_mod(L x,L k){L ans=; for(;k;k>>=,x=x*x) if(k&) ans=ans*x; return ans;} int pri[MM]={},b[MM]={},use=,last[MM]={},id[MM]={};
void init(){
for(int i=;i<MM;i++){
if(!b[i]) pri[++use]=i,last[i]=,id[i]=use;
for(int j=;j<=use&&i*pri[j]<MM;j++){
b[i*pri[j]]=; last[i*pri[j]]=i;
if(i%pri[j]==) break;
}
}
} int M[NN]={},N[NN]={},S[NN]={};
L a[MM]={},m,n,s,ans=,hh=; void rd(L &res,int cnt[]){
res=;
for(int i=;i<;i++){
int x; scanf("%d",&x);
for(res*=x;x>;x=last[x])
cnt[id[x/last[x]]]++;
}
}
void dfs(L x,L id){
if(id==hh)
return void(ans+=(x<=n));
int ID=a[id];
for(int i=;i<=S[ID];i++){
dfs(x,id+);
x=x*pri[ID];
}
}
void solve(){
memset(M,,sizeof(M)); memset(N,,sizeof(N)); memset(S,,sizeof(S)); ans=hh=;
rd(n,N); rd(m,M); rd(s,S);
s<<=; S[]++;
for(int i=;i<NN;i++) if(N[i]>S[i]) a[hh++]=pow(pri[i],S[i]+);
for(int i=;i<(<<hh);i++){
L mul=,zf=;
for(int j=;j<hh;j++)
if(i&(<<j)){
mul=mul*a[j]; zf=-zf;
}
ans=ans+(m/mul)*zf;
}
hh=; for(int i=;i<NN;i++) if(S[i]) a[hh++]=i;
dfs(,);
printf("%lld\n",ans);
} int main(){
init();
int t; cin>>t;
while(t--) solve();
}
【xsy2504】farm 容斥原理的更多相关文章
- SharePoint 2013: A feature with ID has already been installed in this farm
使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...
- hdu4059 The Boss on Mars(差分+容斥原理)
题意: 求小于n (1 ≤ n ≤ 10^8)的数中,与n互质的数的四次方和. 知识点: 差分: 一阶差分: 设 则 为一阶差分. 二阶差分: n阶差分: 且可推出 性质: 1. ...
- hdu2848 Visible Trees (容斥原理)
题意: 给n*m个点(1 ≤ m, n ≤ 1e5),左下角的点为(1,1),右上角的点(n,m),一个人站在(0,0)看这些点.在一条直线上,只能看到最前面的一个点,后面的被档住看不到,求这个人能看 ...
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
- BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3028 Solved: 1460[Submit][Sta ...
- ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)
二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...
- HDU5838 Mountain(状压DP + 容斥原理)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5838 Description Zhu found a map which is a N∗M ...
- How To Collect ULS Log from SharePoint Farm
We can use below command to collect SharePoint ULS log from all servers in the Farm in PowerShell. M ...
- How To Restart timer service on all servers in farm
[array]$servers= Get-SPServer | ? {$_.Role -eq "Application"} $farm = Get-SPFarm foreach ( ...
随机推荐
- Java基础之多线程没那么复杂!
多线程的引入 1.什么是多线程 线程是程序执行的一条路径,一个进程中可以包含多条线程;多线程并发执行可以提高程序的效率</br> 2.进程和线程之间的关系 操作系统可以同时执行多个任务,每 ...
- springboot 配置DRUID数据源
druid 是阿里开源的数据库连接池. 开发时整合 druid 数据源过程. 1.修改pom.xml <dependency> <groupId>mysql</gro ...
- 更新源pip
国内镜像源列表 豆瓣(douban) http://pypi.douban.com/simple/清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/阿里云 h ...
- 删除一直处于deleting状态的数据卷
一.场景 有一个volume数据卷hzb-1G-xxxxxx创建在nc8的ceph节点上,并且该数据卷的但是有一天nc8节点坏掉了.当我们删除hzb-1G-xxxxxx的时候,就会一直处于deleti ...
- Oracle中根据当前时间和活动类型去数据库查询活动id
活动类型默认是1,代表邀请好友 select * from t_invite_activityinfo twhere sysdate >= t.begintime and sysdate< ...
- vue中的前置守卫
前置守卫是为了验证用户信息真实性,一些内容只能在用户登陆以后才能进行查看,例如个人中心,我的购物车,等个人页面,非隐私页面 用router.beforeEach进行验证,这个方法必须写在router实 ...
- 第15章:MongoDB-聚合操作--聚合管道--$match
①$match 用于对文档集合进行筛选,里面可以使用所有常规的查询操作符. 通常会放置在管道最前面的位置,理由如下: 1:快速将不需要的文档过滤,减少后续操作的数据量 2:在投影和分组之前做筛选,查询 ...
- AtCoder Beginner Contest-060
A - Shiritori Problem Statement You are given three strings A, B and C. Check whether they form a wo ...
- STM32F10X-定时器/计数器
1.STM32F10X的计数器与定时器关系 当时钟连接外脉冲时是计数器:当时钟采用系统内部时钟时是定时器! 2.STM32F10X定时器的时钟源 STM32F10X定时器的时钟不是直接来至于APB1和 ...
- php实现网站四则运算。
1.设计思路: 在index.php中建立两个表单,有两个提交,一个跳转到fourArithmeticOperation.php,这里保存用户输入的参数到config.txt中,留给main函数调出. ...