“玲珑杯”线上赛 Round #17 河南专场 B:震惊,99%+的中国人都会算错的问题(容斥计算)
传送门
题意
略
分析
是一道稍微变形的容斥题目,容斥一般的公式
\]
但是这道题只要奇数次数的,那么对于第k项乘以一个系数\(2^{k-1}\)
具体见代码
trick
如果在每次dfs中for循环前加一个判断:if(lcm<=n)...
时间会从1000ms降到20ms
代码
#include<cstdio>
#define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a))
//#pragma comment(linker, "/STACK:102400000,102400000")
//inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}}
inline ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b);}
int t,n,m;
ll lcm,a[16],ans;
/*
举个栗子,如A,B,C,那么第一次dfs会计算A,AB,AC,ABC的值,第二次dfs会计算B,BC,第三次dfs会计算C
,希望大家能够理解
*/
void dfs(int cur,ll lcm,int num)//当前第cur个,需要乘的系数为2^(num-1)
{
	lcm=a[cur]/gcd(a[cur],lcm)*lcm;
	if(num&1) ans+=n/lcm*(1ll<<(num-1));
	else ans-=n/lcm*(1ll<<(num-1));
	if(lcm<=n) for(int i=cur+1;i<m;++i)  dfs(i,lcm,num+1);
}
int main()
{
    for(scanf("%d",&t);t--;)
    {
    	scanf("%d %d",&n,&m);
    	ans=0;
    	for(int i=0;i<m;++i) scanf("%lld",a+i);
    	for(int i=0;i<m;++i)  dfs(i,a[i],1);
    	printf("%lld\n", ans);
    }
    return 0;
}
“玲珑杯”线上赛 Round #17 河南专场 B:震惊,99%+的中国人都会算错的问题(容斥计算)的更多相关文章
- “玲珑杯”线上赛 Round #17 河南专场
		闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的 玲珑杯”线上赛 Round #17 河南专场 Start Time:2017-06-24 12:00:00 End Time:2017-06 ... 
- “玲珑杯”线上赛 Round #17 河南专场 A: 	Sin your life(和化积公式)
		传送门 题意 略 分析 首先将sin(x)+sin(y)+sin(z)h转化成\(2*sin(\frac{x+y}2)*cos(\frac{x-y}2)+sin(z)\),而cos(z)=cos(-z ... 
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)
		2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ... 
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛  F题 Clever King(最小割)
		2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ... 
- 记一次线上由nginx upstream keepalive与http协议"协作"引起的接口报错率飙高事件
		年前接到个任务,说要解决线上一些手机客户端接口报错率很高的问题.拿到了监控邮件,粗略一看,各种50%+的错误率,简直触目惊心.这种疑难杂症解决起来还是挺好玩的,于是撸起袖子action. 最终的结果虽 ... 
- 2019第十二届全国大学生信息安全实践创新赛线上赛Writeup
		本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html 未经允许不得转载! 1.MISC-签到 下载附件后,看到readme.txt打开后提 ... 
- 2017CUIT校赛-线上赛
		2017Pwnhub杯-CUIT校赛 这是CUIT第十三届校赛啦,也是我参加的第一次校赛. 在被虐到崩溃的过程中也学到了一些东西. 这次比赛是从5.27早上十点打到5.28晚上十点,共36小时,中间睡 ... 
- RCTF 2018线上赛 writeup
		苦逼的RCTF,只进行了两天,刚好第二天是5.20,出去xxx了,没法打比赛,难受.比赛结束了,还不准继续提交flag进行正确校验了,更难受. 下面是本次ctf解题思路流程 后面我解出的题会陆续更新上 ... 
- 计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)
		若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题.一直忘记写博客,备忘一下. 米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~ B. Goldbach 题目 ... 
随机推荐
- 项目整理--Echarts前端后台的贯通写法
			项目整理–Echarts前端后台的贯通写法 注:下面所有内容建立在FH admin开源框架和eharts插件基础上,建议观看本案例者进行了解. 业务逻辑 绘制两张图表.分别显示城市空间库和其它数据仓库 ... 
- mui + vue  模板
			示例代码: (function(mui, doc) { // 定义全局变量(计时器) var timer; // mui初始化 mui.init(); // 创建vue的实例 var app = ne ... 
- 使用zTree进行数据动态显示
			由于公司项目的须要.现学了一下zTree的使用. 以下是我项目的结构图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVuamFtaW5fd2h4/f ... 
- INAPP登陆调用的FB接口
			public function login_get (){ $this->load->helper ( 'auth' ); $redirectUrl = $this->input-& ... 
- android笔记5——同一个Activity中Fragment的切换
			今天来模拟一个注冊的界面过程: 点击"下一步"之后: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZW5zb24xNjg1NQ==/f ... 
- sql select(A.B)拼接
			需要做的工作:把DBtable里边的某两个字段,(当然可以更多)或者不同表,道理类似,用某个符号拼接起来. 比如(Table.A).(Tables.B) oracle里边可以这样写,sql没试: se ... 
- CXF、Spring整合的SOAP Web Service服务端
			1.建工程,导入CXFjar包 2.服务接口 package com.cxf.soap; import java.util.List; import javax.jws.WebService; @We ... 
- NPOI实现Excel导入
			导入功能实现: ]; GetExtensionsFromFileStream(file.InputStream); using NPOI.XSSF.UserModel; public List< ... 
- C#令人迷惑的DateTime:世界标准时间还是本地时间?
			先来看一段代码: 复制内容到剪贴板程序代码 DateTime time = DateTime.Parse("2013-07-05 00:00:00");Console.WriteL ... 
- 【读书笔记】iOS-GCD-用法
			代码: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { dispatch_async(dispatch_get_gl ... 
