题目大意:给你三个数$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 容斥原理的更多相关文章

  1. SharePoint 2013: A feature with ID has already been installed in this farm

    使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...

  2. hdu4059 The Boss on Mars(差分+容斥原理)

    题意: 求小于n (1 ≤ n ≤ 10^8)的数中,与n互质的数的四次方和. 知识点: 差分: 一阶差分: 设  则    为一阶差分. 二阶差分: n阶差分:     且可推出    性质: 1. ...

  3. hdu2848 Visible Trees (容斥原理)

    题意: 给n*m个点(1 ≤ m, n ≤ 1e5),左下角的点为(1,1),右上角的点(n,m),一个人站在(0,0)看这些点.在一条直线上,只能看到最前面的一个点,后面的被档住看不到,求这个人能看 ...

  4. BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 4032  Solved: 1817[Submit] ...

  5. BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3028  Solved: 1460[Submit][Sta ...

  6. ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)

    二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...

  7. HDU5838 Mountain(状压DP + 容斥原理)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5838 Description Zhu found a map which is a N∗M ...

  8. 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 ...

  9. How To Restart timer service on all servers in farm

    [array]$servers= Get-SPServer | ? {$_.Role -eq "Application"} $farm = Get-SPFarm foreach ( ...

随机推荐

  1. 更改Ubuntu默认python版本的两种方法python-> Anaconda

    当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.一般Ubuntu默认的Python版本都为2. ...

  2. DocumentFragment类型

    nodeType 11 nodeName #document-fragment nodeValue NULL parentNode null createdocumentfragment()方法创建了 ...

  3. php 微信登录 公众号 获取用户信息 微信网页授权

    php 微信登录 公众号 获取用户信息 微信网页授权 先自己建立两个文件: index.php  和  getUserInfo.php index.php <?php //scope=snsap ...

  4. attachEvent方法绑定事件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. HTTP请求模型和头信息参考

    发送HTTP请求:一个请求由四个部分组成:请求行.请求头标.空行和请求数据 请求行 请求行由三个标记组成:请求方法.请求URI和HTTP版本,它们用空格分隔.例如:GET /index.html HT ...

  6. mysql-5.7.19 压缩安装 设置密码

    初始化完毕后,如果没使用新版本的客户端登入,还会报告类似下面的错误: mysql -uroot -p Enter password: ERROR 1862 (HY000): Your password ...

  7. ASP.NET MVC Owin 基本理解

    一.OWIN OWIN(Open Web Interface for .Net),定义了一个服务器(IIS)和Web应用程序(MVC,Webform)通信的标准接口,并且通过抽象层使得这两个在微软平台 ...

  8. OmniThreadLibrary学习笔记

    http://blog.sina.com.cn/s/articlelist_1157240623_6_1.html 非常好的控件,仔细看

  9. 数据库中表的位置,在sysdatabases中

    name dbid sid mode status status2 crdate reserved category cmptlevel filename version master :: :: C ...

  10. iOS证书说明和发布

    1.首先通过钥匙串访问——证书助理——从证书颁发机构请求证书——填写证书信息(邮箱,常用名称,存储到磁盘)——存储为(自定义名称.certSigningReuqest,简称CSR文件,只是为了提交到苹 ...