题目大意:给你三个数$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. 2018.12.22 spoj7258 Lexicographical Substring Search(后缀自动机)

    传送门 samsamsam基础题. 题意简述:给出一个串,询问第kkk大的本质不同的串. 然而这就是弦论的简化版. 我们把samsamsam建出来然后贪心选择就行了. 代码: #include< ...

  2. linux 修改yum 为阿里云源

    为了加快yum的下载速度,我们可以讲yum源指向阿里云的资源. 操作方法: 1.备份系统的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repo ...

  3. JMeter测试工具.jmx文件详解

    摘要:了解.jmx文件格式类型,对jmeter二次开发与拓展有很大的帮助,当然也可以利用python对其进行一些处理(生成一些测试用例,对jmx文件进行 ”增删改查“). 一个完整用例的.jmx文件基 ...

  4. 在vue中没有数据的渲染方法

    1.例如在评论区中,评论一般分为两种形式,一种是有评论,一种是没有评论, 用v-if进行判断,判断的是评论的长度,此时评论的数据应为数组 2.可以computed中记性计算后进行数据的返回在用v-if ...

  5. vue2.x和vue1.0

    1.首先挂载方式上 在vue2.0中,如果使用body或者html作为挂载点,则会报以下警告: Do not mount Vue to <html> or <body> - m ...

  6. 在window平台下,自己DIY编译OpenSSL,Libcurl ,来支持HTTPS传输协议

    1 缘起 原来就了解些libcurl,一直没有机会在项目实际使用libcurl.   恰好最近一个云存储的项目,服务器使用openstack 恰好我负责现在的一个云存储SDK c++版本的开发中. 与 ...

  7. (转)忘记wamp-mysql数据库root用户密码重置方法

    转自:http://www.jb51.net/article/28883.htm 1.打开任务管理器,结束进程  mysqld-nt.exe . 2.运行命令窗口 1)进行php服务管理器安装目录中的 ...

  8. java实现下载excel功能

    1,获取服务器现有excel文件 public List<Object[]> getObject(String filePath){ log.info("**文件路径为:**&q ...

  9. Linq动态查询与模糊查询 ---转

    Linq动态查询与模糊查询(带源码示例) 继LINQ动态组合查询PredicateExtensions讲解 ----- 在用上面的方法时遇到了些问题 解决 LINQ to Entities 不支持 L ...

  10. Android viewpager + 可缩放的imageview

    http://files.cnblogs.com/files/liaolandemengxiang/PhotoWallFallsDemo.rar http://files.cnblogs.com/fi ...