美团网哈工大研发2014笔试
转载请注明引用 :blog.csdn.net/makamus 版权所有@makamus欢迎大家关注本人博客,技术交流请加QQ:508742012
1、一堆硬币,一个机器人,如果是反的就翻正,如果是正的就抛掷一次,无穷多次后,求正反的比例
首先设硬币的正反概率分别为p正 、 p反 ,第一次后p正1= p反+1/2p正 ,p反1= 1/2p正 2、概率题:一个汽车公司的产品,甲厂占40%,乙厂占60%,甲的次品率是1%,乙的次品率是2%,现在抽出一件汽车是次品,问是甲生产的可能性
甲的次品占公司40%* 1%=0.004;乙次品占公司产品60%*2%=0.012;总次品占所有产品为0.016;现已知是次品,则为甲的概率为1/4=25%。
3、 有100盏灯(它们的位置编号为1, 2 .. 99,100),刚开始全都是灭着的。第一次把所有的灯都打开,第二次把偶数位置上的灯灭了,第三次把位置是3的倍数的灯原来灭的打开,原来打开着的,灭了。第N次把位置是N的倍数的灯原来灭的打开,原来打开着的,灭了。问第100次后还有多少盏灯亮着的?
int arrDeng[101];void doWithArr(int arr[],int n){/*memset(arr,0,101);*/int k;for(int i=1;i<=100;i++){k=1;while(i*k<=100){if(arr[i*k]==0){arr[i*k]=1;}else{arr[i*k]=0;}k++;}}for(int i=1;i<=100;i++){if(arr[i]==1){printf("%d",i);}
}}
来源于[http://www.howwant.com/category/brain-food/]有100盏灯,从1~100编上号,开始时所有的灯都是关着的。
第一次,把所有编号是1的倍数的灯的开关状态改变一次;
第二次,把所有编号是2的倍数的灯的开关状态改变一次;
第三次,把所有编号是3的倍数的灯的开关状态改变一次;
以此类推,直到把所有编号是100的倍数的灯的开关状态改变一次。
问,此时所有开着的灯的编号。
【分析】
由于最开始灯是灭的,那么只有经过奇数次改变开关状态的灯是亮的。根据题意可知一个数字有多少约数就要开关多少次,所以最后亮着的灯的数学解释就是:灯的编号有奇数个不同的约数。
一个数的约数按出现的奇偶个数分为以下两种:
约数是成对出现的,比如8的约数对为:(1,8)、(2,4)。
约数是单个出现的,比如36的约数对为:(1,36)、(2,18)、(3,12)、(4,9)、(6)。
可以看出6自己单独是36的约数,而不是和别的数连在一起。所以只有平方数才会有奇数个整型约数,才满足本题的要求。从1到100的平方数为:
1,4,9,16,25,36,49,64,81,100。
所以只有这些灯是亮的。
【答案】
编号为1,4,9,16,25,36,49,64,81,100的灯是亮的。
说明:本题是一道数学类型题目,但是绝对不能用简单的计算法来解决本题,那样的计算量太庞大,所以用分析法加计算法来分析才是正确简单的解决本题的最佳途径。
4、链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现
struct ListNode{ int m_nValue; ListNode* m_pNext;};