系列:1到1000中包含8的个数
来源:互联网 发布:图书数据加工公司招聘 编辑:程序博客网 时间:2024/05/10 18:52
排列组合问题
分析:
不包含8的数的每一位都不是8,1到999是三位数,每位都不是8,只能由0到7和9构成,所以不包含8的数字的个数为9^3个。那么包含8的数字的个数为1000-9^3 = 271
编程验证:
int x = 0; for (int i = 1; i <= 1000; i++) { if (String.valueOf(i).contains("8")) { x++; } } System.out.println(x);
上面是从对立面分析的。我们从正面分析,把包含8的数字分为3类,包含一个8,包含2个8和包含3个8.
包含一个8的:首先从3位中挑出一位用于放8,其他两位不能是8,其余两位有9中情况。所以一共是种情况
包含2个8的:首先从3位中挑出两位包含8,剩下的一位不包含8,共种情况
包含3个8的只有一种情况。所以一共++1 = 271
举一反三:
1到1000中包含6或8的数字
对立面分析:即不包含6也不包含8的情况一共8^3种,所以包含6或者8的情况有1000-8^3=488
正面分析:
有一位包含6或8:,从3位中挑出一位放6或8,剩下两位都不能用6或8,乘以2是因为放6或者放8.
有两位包含6或8:
有三为包含6或8:2^3
所以一共++2^3 = 488
编程验证:
int x = 0; for (int i = 1; i <= 1000; i++) { if (String.valueOf(i).contains("8") || String.valueOf(i).contains("6")) { x++; } } System.out.println(x);
上面的8和8或6可以推广到其他任意数字。
继续举一反三:
1到10000中包含6或8但不包含4的数字的个数
这个感觉从对立面不好分析,那我们直接正面分析
包含一个6或8:
包含两个6或8:
包含三个6或8:
包含四个6或8: 2^4
所以一共4160种情况
编程验证:
int count = 0; for (int i = 1; i <= 10000; i++) { if (!String.valueOf(i).contains("4") && (String.valueOf(i).contains("8") || String.valueOf(i).contains("6"))) { count++; } } System.out.println(count);
0 0
- 系列:1到1000中包含8的个数
- 计算0到N中包含数字1的个数
- 0到N中包含数字1的个数
- 求1到N个数中包含质因子m的数的个数
- 从1到n的数中总共包含1的个数
- 从1到n个自然数中,各个数位包含1的个数
- <编程之美>计算0到N中包含数字1的个数
- 计算0到N中包含数字1的个数(整合)
- 整数N中包含的1的个数
- 求整数的二进制形式中包含1的个数
- 找出1到1000中质数的个数
- 计算图中包含环的个数
- 1到n中1的个数
- 1到n中1的个数
- 1到n中1的个数
- 1到100中9的个数
- 剑指offer系列源码-二进制中1的个数
- 剑指Offer系列---(13)二进制中1的个数
- 关系型数据库ACID特性
- ADFS 更新证书 Office365
- Binder机制-简单用法(一)
- 利用jquery ui实现微信底部的二级下拉菜单
- CenOS7上网络组team的实现
- 系列:1到1000中包含8的个数
- Kubernetes1.6安装指南 (二进制文件方式)
- 二叉树的三种遍历(前序,中序,后序)
- STL的next_permutation函数
- Java基本数据类型转换
- vijos P1005 超长数字串 解题报告
- Mask RCNN in TensorFlow
- 关于js中两种定时器的设置及清除
- 系统监控利器-dstat命令(1)