【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 ( ...
随机推荐
- tomcat7 安装 windows 服务
tomcat 可以安装成windows 服务,这样 每次启动就不需要启动tomcat了. 具体配置: 1.修改 service.bat 在行首添加 set "JAVA_HOME=E:\jdk ...
- DocumentType类型
并不常用 nodeType 10 nodeName doctype的名称 NodeValue 值为null parentNode Document 不支持子节点 DocumentType不能动态创建, ...
- Day1-Python基础--数据类型
距离上次更新,已经一月有余.说明学习状态不好,且滞后严重.第二模块也滞后5周之多,可能学习方法不对,有点凌乱,导致写作业时思路还是打不开,再一个是练习的太少了吧,以后得多挤挤时间来了.目前到了这个年纪 ...
- js动态删除某一行,内容超出单元格后超出的部分用省略号代替
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <s ...
- SQL常用增删改查
转 http://www.cnblogs.com/daxueshan/p/6687521.html 1增 1.1[插入单行]insert [into] <表名> (列名) values ( ...
- IP和网段及子网掩码基础知识
IP地址由网络号和主机号两部分组成,网络号的最高位必须是"0",IP地址和子网掩码求"与"算出网络地址,只有网络地址相同才可直接通信,否则需要借助路由. 主机标 ...
- linux程序员的proc文件系统
1) 设置core文件存放路径和文件名模式: 设置/proc/sys/kernel/core_pattern,如: echo "core" > /proc/sys/kerne ...
- 合理提升WEB前端性能
前端的优化包括四个部分:HTML结构优化.CSS样式优化.JS行为优化.服务器的优化.合理的前端优化不仅能够提升网站加载速度,而且能够更好的提升用户体验和团队开发效率.所以前端性能优化的重要性是不言而 ...
- hdu 4941 map的使用
http://acm.hdu.edu.cn/showproblem.php?pid=4941 给定N,M和K,表示在一个N*M的棋盘上有K个棋子,给出K个棋子的位置和值,然后是Q次操作,对应的是: 1 ...
- HDU2732一个让我debug了一晚上的题目
思路都理解了,清晰了,就是代码不对,还是有些小地方自己注意不到,即使就在你的眼前也不易发现的那种 Description: 也是一个最大流的构图,没相出来,或者说想简单了也是标记点1 至 n * m是 ...