这2道计算题让我印象非常深刻,有方法的,很快能做出来,不知道方法的费时费力还是错的。
1、0-1000的整数中,只包含一个数字5的数总共有多少个?
要能敲代码,我至少有5种方式可以做出来,可惜的是只有笔和纸。
大部分程序猿看到这个题就开始分类汇总:
1位数的,只有1个5;
2位数的,个位是5的有8个(15~95,除开55)
十位数是5的有10个(50~59)
3位数……
做到这里我已经快晕了,这只是一道1分的选择题,有没有更好的方法呢?
求助了某大佬,1分钟不到做出来了,解法如下:
一共3种情况:**5、*5*、5**
*是0-9,除开5,9个数字
每一种情况是9*9个数字
最后排列组合汇总,只包含1个5的数字个数:9*9*3=243
有人会问005要抛开啊!其实005就相当于数字5,没毛病。
这可比我敲代码for都还快,回去后我也敲代码for了一次,答案也是243。
2、共100人,会篮球的有45人,会乒乓球的55人,会足球的53人,会篮球和乒乓球的25人,会篮球和足球的28人,会乒乓球和足球的32人,3种球都会的有20人,问3种球都不会的有多少人?
画图第一步:正中是3种球都会的人数
第二步,依次补上会2种球的-3种球都会的。比如会篮球和乒乓球的25人,减去3种球都会的20人,交集部分补上5,其余同理:
第三步,会一种球的-3种都会的-减去2种会的=只会这一种球(不会其他2种球)的:
最后一步,总人数-图中所有数字(3种都会的+会2种的+会1种的)=1种都不会的人数
100-(20 + 5+8+12 + 12+18+13) = 100-88=12