【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初赛】整除相关推荐

  1. NOIP2018提高组初赛准备

    NOIP2017提高组初赛错题 一.单项选择题(共15 题,每题1.5 分,共计22.5 分:每题有且仅有一个正确选项) 4. 2017年10月1日是星期日,1949年10月1日是( ). A. 星期 ...

  2. 【百度之星2014~初赛(第二轮)解题报告】JZP Set

    声明 笔者近期意外的发现 笔者的个人站点 http://tiankonguse.com/ 的非常多文章被其他站点转载,可是转载时未声明文章来源或參考自 http://tiankonguse.com/  ...

  3. 2021csp/s初赛

    2021CSP-S1初赛答案评讲 一.单项选择题 1.A ls:list列表,用于列出目录下文件和子目录. cp:copy复制. cd:change directory,切换目录. all:linux ...

  4. 提高组CSP-S初赛模拟试题整理

    目录 提高组 CSP−SCSP-SCSP−S 第 666 套初赛模拟试题整理 提高组 CSP−SCSP-SCSP−S 第 777 套初赛模拟试题整理 提高组 CSP−SCSP-SCSP−S 第 888 ...

  5. CSP-J CSP-S初赛相关知识汇总

    [计算机科学速成课][40集全/精校] - Crash Course Computer Science [计算机科学速成课][40集全/精校] - Crash Course Computer Scie ...

  6. NOIP2018普及组初赛题解

    展开全文 第24届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2018 年 10 月 13 日 14:30~16:30 选手注意: 1.试题纸共有 7 页,答题纸共有 2 页,满 ...

  7. CSP初赛篇·知识大纲(未完成)

    PS.只记录个人认为的重点或者真题模拟题中出现的知识 PS.图片大多来自百度,内容借鉴百度和校本资料 信息学休闲娱乐 让我们先来认识一下几位 巨佬 (巨佬顺序按考试出现率排列,从高到低): 名字 生卒 ...

  8. 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解

    华南师大 2017 年 ACM 程序设计竞赛新生初赛题解 华南师范大学第很多届 ACM 程序设计竞赛新生赛(初赛)在 2017 年 11 月 20 日 - 27 日成功举行,共有 146 名同学有效参 ...

  9. 2020全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及参考解答

    2020全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及参考解答 简介 赛题构成 代码提交说明 成绩评定 2020真题 1-1 数字与相邻的前.后数字之和可以被4整除 题目 个人对 ...

最新文章

  1. 作为候选人,你需要问些什么?你需要查些什么?这些关乎你的利益和未来!
  2. linux 两个mysql_Linux下安装两个MySQL的方法
  3. MySQL数据库事务及其特性
  4. vmware下安装rhel5
  5. 算法求解方法与思路的总结
  6. 数学建模之初等模型详解
  7. Python自动化结算工资和统计报表
  8. imagenet2012 对应 label
  9. 用ip地址远程登录linux的软件,如何远程登陆已知 IP地址的电脑?
  10. JNCIE考试准备指南(ITAA 2014版)
  11. 传奇怎么设置沙巴克自动攻城
  12. 《手把手教你构建自己的 Linux 系统》学习笔记(9)
  13. CVPR2022:计算机视觉中长尾数据平衡对比学习
  14. bluehost中国和bluehost美国的区别?应该选择哪个?
  15. Maya - 后缀为xgen文件导出到虚幻引擎
  16. 解决QQ小游戏、微信小游戏 getLaunchOptionsSync()获取的数据为旧数据
  17. jacoco不是奶茶,却像奶茶一样美味,不尝一下吗?
  18. bzoj2754【SCOI2012】喵星球上的点名
  19. 无线充电各种原理方案的比较
  20. google autoaugment

热门文章

  1. xbox360游戏下载_Microsoft Xbox 360无线游戏接收器
  2. CSS中实现div元素水平垂直居中
  3. webmatrix安装_指南:使用Microsoft WebMatrix进行WordPress开发
  4. C语言求最大公约数的三种方法
  5. 我如何在 Linux 上扫描家庭照片
  6. ddos是什么 ddos攻击方式有哪些该怎么防范?
  7. 智能超表面(RIS)原理,具体实现,全向智能超表面(IOS)应用
  8. flac格式怎样转换成mp3?
  9. oracle 和mysql 视图_Oracle视图的种类和区别
  10. 第07章 图形操作 · 7.1 GDI原理(3)