【NOIP2013初赛】整除
【NOIP2013初赛】整除
- 题目
- 题目描述
- 输入
- 输出
- 样例输入
- 样例输出
- 数据范围
- 题目大意
- 思路
- Code
from:jack
题目
题目描述
给出n个数a1,a2……an,求区间[L,R]中有多少个整数不能被其中任何一个数整除。
输入
第一行三个正整数,n,L,R。
第二行n个正整数a1,a2……an
输出
一个数,即区间[L,R]中有多少个整数不能被其中任何一个数整除。
样例输入
2 1 1000
10 15
样例输出
867
数据范围
对于30%的数据,1<=n<=10,1<=L,R<=1000
对于100%的数据,1<=n<=18,1<=L,R<=10^9
题目大意
这道题主要是说,在LLL~RRR的区间内有多少个数与输入的aia_iai都互质
思路
这道题我的思路使用容斥来做,本来能AC的,模拟赛的时候由于某种原因导致我的时间不够导致 TLE 30。
我们可以先算出能被aia_iai整除的个数,再用再用总数减掉它们。
那问题来了,要求的是LLL~RRR区间内的个数,LLL也不一定从1开始,那这怎么处理呢?我们可以考虑用1 ~RRR区间个数减去1 ~LLL-111 区间个数即为LLL~RRR区间的个数。
如图,上图三个圈的总数为:
三个圈的和(即整体)- 两个圈的交集 + 三个圈的交集
由此,我们可以得到规律:
总数 = 整体 - 两个的交集 + 三个的交集 - 四个的交集 + 五个的交集……
Code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,l,r,ri,a[20],ans,ans1,tot;
ll f[100005][20],aa[20];
int cnt[20],bz[20];
int gcd(int m,int n)
{if(m<n) swap(m,n);int r;while(n!=0){r=m%n;m=n;n=r;}return m;
}
ll getans(ll t)
{ll s=0;for(int i=1;i<=n;i++){ll js=0;for(int j=1;j<=cnt[i];j++)js+=t/(f[j][i]);if(i%2==0) s+=js;else s-=js;}return s;
}
void choose(int sh,int x,int k)
{if(k>x){ll total=1;for(int i=1;i<=x;i++){int gc=gcd(total,a[aa[i]]);total*=a[aa[i]]/gc;if(total>r) break;}if(total<=r){++cnt[x];f[cnt[x]][x]=total;}}else{for(int i=sh;i<=n;i++)if(!bz[i]){aa[k]=i;bz[i]=1;choose(i+1,x,k+1);bz[i]=0;}}
}
int main()
{scanf("%lld%lld%lld",&n,&l,&r);for(int i=1;i<=n;i++)scanf("%lld",&a[i]);ri=l-1;ans=r;ans1=ri;for(int i=1;i<=n;i++){memset(bz,0,sizeof(bz));memset(aa,0,sizeof(aa));choose(1,i,1);}ans1+=getans(ri);ans+=getans(r);printf("%lld",ans-ans1);
}
【NOIP2013初赛】整除相关推荐
- NOIP2018提高组初赛准备
NOIP2017提高组初赛错题 一.单项选择题(共15 题,每题1.5 分,共计22.5 分:每题有且仅有一个正确选项) 4. 2017年10月1日是星期日,1949年10月1日是( ). A. 星期 ...
- 【百度之星2014~初赛(第二轮)解题报告】JZP Set
声明 笔者近期意外的发现 笔者的个人站点 http://tiankonguse.com/ 的非常多文章被其他站点转载,可是转载时未声明文章来源或參考自 http://tiankonguse.com/ ...
- 2021csp/s初赛
2021CSP-S1初赛答案评讲 一.单项选择题 1.A ls:list列表,用于列出目录下文件和子目录. cp:copy复制. cd:change directory,切换目录. all:linux ...
- 提高组CSP-S初赛模拟试题整理
目录 提高组 CSP−SCSP-SCSP−S 第 666 套初赛模拟试题整理 提高组 CSP−SCSP-SCSP−S 第 777 套初赛模拟试题整理 提高组 CSP−SCSP-SCSP−S 第 888 ...
- CSP-J CSP-S初赛相关知识汇总
[计算机科学速成课][40集全/精校] - Crash Course Computer Science [计算机科学速成课][40集全/精校] - Crash Course Computer Scie ...
- NOIP2018普及组初赛题解
展开全文 第24届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2018 年 10 月 13 日 14:30~16:30 选手注意: 1.试题纸共有 7 页,答题纸共有 2 页,满 ...
- CSP初赛篇·知识大纲(未完成)
PS.只记录个人认为的重点或者真题模拟题中出现的知识 PS.图片大多来自百度,内容借鉴百度和校本资料 信息学休闲娱乐 让我们先来认识一下几位 巨佬 (巨佬顺序按考试出现率排列,从高到低): 名字 生卒 ...
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
华南师大 2017 年 ACM 程序设计竞赛新生初赛题解 华南师范大学第很多届 ACM 程序设计竞赛新生赛(初赛)在 2017 年 11 月 20 日 - 27 日成功举行,共有 146 名同学有效参 ...
- 2020全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及参考解答
2020全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及参考解答 简介 赛题构成 代码提交说明 成绩评定 2020真题 1-1 数字与相邻的前.后数字之和可以被4整除 题目 个人对 ...
最新文章
- 作为候选人,你需要问些什么?你需要查些什么?这些关乎你的利益和未来!
- linux 两个mysql_Linux下安装两个MySQL的方法
- MySQL数据库事务及其特性
- vmware下安装rhel5
- 算法求解方法与思路的总结
- 数学建模之初等模型详解
- Python自动化结算工资和统计报表
- imagenet2012 对应 label
- 用ip地址远程登录linux的软件,如何远程登陆已知 IP地址的电脑?
- JNCIE考试准备指南(ITAA 2014版)
- 传奇怎么设置沙巴克自动攻城
- 《手把手教你构建自己的 Linux 系统》学习笔记(9)
- CVPR2022:计算机视觉中长尾数据平衡对比学习
- bluehost中国和bluehost美国的区别?应该选择哪个?
- Maya - 后缀为xgen文件导出到虚幻引擎
- 解决QQ小游戏、微信小游戏 getLaunchOptionsSync()获取的数据为旧数据
- jacoco不是奶茶,却像奶茶一样美味,不尝一下吗?
- bzoj2754【SCOI2012】喵星球上的点名
- 无线充电各种原理方案的比较
- google autoaugment
热门文章
- xbox360游戏下载_Microsoft Xbox 360无线游戏接收器
- CSS中实现div元素水平垂直居中
- webmatrix安装_指南:使用Microsoft WebMatrix进行WordPress开发
- C语言求最大公约数的三种方法
- 我如何在 Linux 上扫描家庭照片
- ddos是什么 ddos攻击方式有哪些该怎么防范?
- 智能超表面(RIS)原理,具体实现,全向智能超表面(IOS)应用
- flac格式怎样转换成mp3?
- oracle 和mysql 视图_Oracle视图的种类和区别
- 第07章 图形操作 · 7.1 GDI原理(3)