sdut 2543整除
来源:互联网 发布:燕雀焉知鸿鹄之志全文 编辑:程序博客网 时间:2024/05/27 20:52
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2543
容斥原理:
http://www.cppblog.com/vici/archive/2011/09/05/155103.html
题解:
5的倍数有5、10……1000共200个
6的倍数有6、12……996共166个
8的倍数有8、16……共125个
24的倍数有24、48……984共41个
30的倍数有30、60……990共33个
40的倍数有40、80……1000共25个
120的倍数有120、240……960共8个
根据容斥原理可知,5或6或8的倍数有
(200+166+125)-(33+25+41)+8=400(个)
不能被5或6或8中任一个整除的有1000-400=600(个)
原理:
用A表示能被5整除集合,用B表示能被6整除集合,用C表示能被8整除集合,∣A∣表示集合A的元素个数等等,则有∣A∣=200,∣B∣=166,∣C∣=125,∣A∩B∣=33,∣B∩C∣=41,∣,∣C∩A∣=25,利用容斥原理得
∣A UB UC∣
=∣A∣+∣B∣+∣C∣-(∣A∩B∣+∣B∩C∣+∣C∩A∣)+∣A∩B∩C∣
=(200+166+125)-(33+41+25)+8=400(个)
当计算∣A∣+∣B∣+∣C∣时,属于A∩B,B∩C,C∩A的元算了两次,故应减去1次,但减去∣A∩B∣+∣B∩C∣+∣C∩A∣时,却将属于A∩B∩C的元减了两次,故应再加上1次.
#include <stdio.h>int main(){int n;while(scanf("%d",&n)!=EOF){printf("%d\n",n/5+n/6+n/8-n/30-n/24-n/40+n/120);}return 0;}
0 0
- sdut 2543整除
- SDUT 2543 整除
- SDUT 2543 整除
- SDUT 整除
- SDUT 2543 ——整除 容斥原理
- C语言实验——整除 (sdut oj)
- YTU 2543: 数字整除
- 整除
- 整除
- 整除
- 整除
- 整除
- 整除
- SDUT 3107 DFS判断n个数可以组成可被x整除的个数
- SDUTOJ 2543 整除(容斥原理)
- [引]整除
- 整除问题
- 整除规则
- Wooden Sticks
- 继承
- jquery form序列化转换为json对象
- 实现一个打点计时器,要求 1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1 2、返回的对象中需要包含一个 can
- POJ 1703 带权并查集
- sdut 2543整除
- 若系统中有五台打印机,有多个进程均需要使用两台,规定每个进程一次仅允许申请一台,则在不发生死锁的情况下至多允许______个进程参与竞争
- Linux文件系统基础(5)
- ubuntu 配置xx_net 3.1.19
- TCP/IP 是用于因特网 (Internet) 的通信协议
- UVALive 7461 - Separating Pebbles
- java生成缩略图
- Flying to the Mars
- 9528