返回

揭秘拼多多2020校招笔试真题:你的智商够不够?

闲谈

各位同学,大家好!

眼下正值秋招季,不少互联网大厂的校招笔试题也纷纷浮出水面。今天,我们就来挑战一下拼多多2020年的校招笔试题。听说,不少应届毕业生都折戟在这道题上。那么,你的智商够不够呢?

在正式开讲之前,我们先来了解一下拼多多这家公司。拼多多成立于2015年,总部位于上海,是一家专注于C2M(消费者直连制造商)的电商平台。短短几年时间,拼多多就迅速崛起,成为国内第三大电商平台。

拼多多的校招笔试题向来以难度高、题目刁钻而著称。今天这道题也不例外。题目如下:

给定一个正整数n,求出1到n的所有正整数中,有多少个数字含有数字4。

乍一看,这道题似乎很简单。但是,当n足够大的时候,我们不可能一个个数字去数。那么,有没有什么巧妙的方法可以解决这个问题呢?

其实,我们可以利用数学归纳法来解决这个问题。

基线情况:

当n=1时,1到1中只有一个数字含有数字4,即4。

归纳假设:

假设对于某个正整数k,1到k的所有正整数中,含有数字4的数字个数为f(k)。

归纳步骤:

接下来,我们要证明当n=k+1时,1到k+1的所有正整数中,含有数字4的数字个数为f(k+1)=f(k)+g(k),其中g(k)为k+1中含有数字4的数字个数。

如何求解g(k)?

  • 对于1到k的数字,如果k含有数字4,那么k+1也含有数字4。因此,g(k)包括k中含有数字4的数字个数。
  • 对于1到k的数字,如果不含有数字4,那么k+1中可能含有数字4,也可能不含有数字4。如果k+1的十位数不为4,那么k+1肯定不含有数字4。如果k+1的十位数为4,那么k+1是否含有数字4取决于k的个位数是否为4。

综合以上分析,我们可以得到:

g(k) = f(k) + (k%10==4 && k/10%10!=4)

因此,我们有:

f(k+1) = f(k) + g(k) = f(k) + f(k) + (k%10==4 && k/10%10!=4)
f(k+1) = 2f(k) + (k%10==4 && k/10%10!=4)

收尾工作:

根据基线情况和归纳假设,我们可以得到:

f(n) = 2f(n-1) + (n%10==4 && (n-1)%10%10!=4)
f(n) = 2^n + Σ(i=1,n-1)(2^(n-1-i)) * ((i)%10==4 && ((i-1)%10%10!=4))

有了这个公式,我们就可以轻松地求出1到n的所有正整数中,有多少个数字含有数字4。

怎么样,这道题是不是没有想象中那么难呢?只要掌握正确的解题方法,相信大家都可以轻松搞定。

最后,祝愿大家秋招顺利!