1~n中不是2,3,5,7倍数的个数

首先看到这个题目,因为没有看到输入的大小和时间要求,就用了直接就能想到的方法来做,也就是遍历1~n中的所有数,然后对每一个数都和2,3,5,7求余数,这种方法在n的大小比较小的情况下还是可以的,但是我一看输入的大小1≤N≤10181\leq N\leq 10^{18},我瞬间就吓尿了,这是什么数量级啊,然后我就知道这个题目肯定不能用遍历来做了,然后我就没有办法啦,然后我百度了一下,又是新技能get。

首先比如要求N中2的倍数的个数,直接用N2 \frac N 2就可以算出来了,比如10中2的倍数的的个数直接就可以算出来是5,可以说是非常神奇了,长这么大我还是第一见过这种操作。然后,求N中不是2,3,5,7倍数的个数,可以先算出是2,3,5,7倍数的个数,然后用N减掉就可以了,重点是,求2,3,5,7倍数的时候不能直接将N2+N3+N5+N7加起来,因为有的数可以既是2的倍数也是3的倍数,其他数也是同理。所以这时候就可以用到一个公式啦,这个公式就是\frac N 2+\frac N 3+\frac N 5 +\frac N 7加起来,因为有的数可以既是2的倍数也是3的倍数,其他数也是同理。所以这时候就可以用到一个公式啦,这个公式就是 A∪B=A+B−A∩BA\cup B=A+B-A\cap B$
也就是说如果要求2的倍数和3的倍数的个数话,可以先将2的倍数个数+3的倍数个数-既是2的倍数和3的倍数,推广之后呢,也就是将奇数的加起来,减去偶数的,就是结果。为了更好的理解这个,直接上代码来看就好。

#include<iostream>
using namespace std;long long n, a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd, abcd;
int main() {cin >> n;a = n / 2; //2的倍数的个数b = n / 3; //同理c = n / 5;d = n / 7;ab = n / 6; //同时为2和3倍数的个数,除的是2和3的最小公倍数ac = n / 10;//下面同理ad = n / 14;bc = n / 15;bd = n / 21;cd = n / 35;abc = n / 30;abd = n / 42;acd = n / 70;bcd = n / 105;abcd = n / 210;cout << n-(a + b + c + d - ab - ac - ad - bc - bd - cd + abc + abd + acd + bcd - abcd) << endl;return 0;
}

2017-07-07 2,3,5,7倍数相关推荐

  1. php 评论插件,Typecho评论增强插件:TeComment(2017.09.07更新)

    TeComment(2017.09.07更新) Typecho 评论增强插件,可为Typecho评论增加评论工具栏.实现评论列表异步加载以及Ajax提交评论功能 插件地址:TeComment 1.安装 ...

  2. Kaggle常用函数总结 原创 2017年07月03日 21:47:34 标签: kaggle 493 kaggle比赛也参加了好几次,在这里就把自己在做比赛中用到的函数汇总到这,方便自己以后查阅

    Kaggle常用函数总结 原创 2017年07月03日 21:47:34 标签: kaggle / 493 编辑 删除 kaggle比赛也参加了好几次,在这里就把自己在做比赛中用到的函数汇总到这,方便 ...

  3. 2017年07月03号课堂笔记

    2017年07月03号 星期一  多云 空气质量:轻度污染~中度污染 内容:MySQL第四节课 in和not in:两个表的内连接:exists和not exsits的使用:all,any和some: ...

  4. 百万年薪背后 是人工智能领域泛起的人才泡沫 2017年07月04日 06:30 PingWest 微博 微信 空间 分享 添加喜爱 //d1.sina.com.cn/201706/26/14587

    百万年薪背后 是人工智能领域泛起的人才泡沫 2017年07月04日 06:30 PingWest 微博微信空间分享添加喜爱 (原标题:百万年薪背后 是人工智能领域不断泛起的人才泡沫) 应采访者要求,戴 ...

  5. 2021.07.07 宇信科技

    2021.07.07 宇信科技 宇信科技          晚上电话面 问了一堆java基础,离谱,jd上也没要求java:简历筛选扣工资! java小白,凭借c语言基础简单回答了一哈,面试官估计在电 ...

  6. [2017.02.07] Lua入门学习记录

    #!/home/auss/Projects/Qt/annotated/lua -- 这是第一次系统学习Lua语言 --[[ 参考资料: 1. [Lua简明教程](http://coolshell.cn ...

  7. 2017/05/07 java 基础 随笔

    1.^异或  逻辑运算符  两边相同为false  不同为ture 2.键盘录入 package com.huawei; /*** 键盘录入* @author Eric**/ import java. ...

  8. 2017.4.07 js 中的function 实现的方式

    函数分为FD (函数定义),FE(函数表达式) ,函数构造器得到的函数 (1)  FD 的栗子: function getTaste(){ ....... } 解析器遇到上面的function关键字, ...

  9. filddler一个抓包修改的工具 貌似很强大2017.12.07

    filddler直接百度下载  还没弄懂怎么用  有待研究! 转载于:https://www.cnblogs.com/gangpao/p/8000510.html

  10. 2017.10.07【NOIP提高组】模拟赛B组 瑰丽华尔兹 题解

    传送门 Description 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有一种漫步仙境的惬意? 众所周知,跳华尔兹时,最重要的是有好的音乐.但是很少有几个人知道,世界上最伟大的钢琴家一 ...

最新文章

  1. Python matplotlib 绘制等高线图
  2. crackme之019
  3. 线性时间冰山查询算法(Linear-time Iceberg Query Algorithm )
  4. 什么是声明式事务控制
  5. ffmpeg基础库编程开发 读书笔记
  6. SQL Server 2014如何提升非在线的在线操作
  7. dell屏幕亮度调节不了_?戴尔XPS13 7390笔电测评:10代酷睿加持,屏幕/散热/续航升级...
  8. Web前端开发必备工具推荐
  9. memset 和 memcpy 和 memcmp (strncmp遇到\0会中断)
  10. iOS 6的Rotation
  11. Leetcode-233-数字1的个数
  12. 个性化系统推送 java_个性化推送系统
  13. 【Error】pwntools 解决安装terminator后 unable to find a shell
  14. 未知USB设备(设备描述符请求失败)是什么?
  15. 组卷与考试系统_题库添加选择题模块
  16. php 邮箱附件 大小限制,不能作为电子邮件的附件发送的是什么?
  17. 网络安全协议之SSL协议
  18. 第二阶段--团队冲刺--第五天
  19. dataV中重置边框组件的宽高的initWH方法的使用
  20. 短视频挺进在线音乐腹地

热门文章

  1. 【超级表格创业谱】王庆刚:你的岗位有没有辜负你的才华?
  2. 微信 speex 高清语音文件转MP3
  3. 大数据要学什么?该怎么学?
  4. 【洛谷】P2689 东南西北 c++
  5. KDL轨迹规划总结:(1)
  6. 2020年执业药师考试,5个锦囊助你做好最后冲刺!
  7. pem格式证书编码 x509_PEM证书格式
  8. java lifo_java:stack栈: Stack 类表示后进先出(LIFO)的对象堆栈
  9. 天啦噜!Stateflow动态测试竟然so easy
  10. centos7 net-snmp agentx