前面的话:一直觉得学习计算机是需要天赋的,你的思维能力真的很重要,个人认为自己还是比较喜欢计算机的,但是真心智商是硬伤啊,积累吧,总会有所突破的。加油
1,源地址: http://blog.renren.com/GetEntry.do?id=902046071&owner=256440391
腾讯某笔试题:
A、B两人玩猜字游戏,游戏规则如下:
A选定一个 [1,100]之间的数字背对B写在纸上,然后让B开始猜;如果B猜的偏小,A会提示B这次猜的偏小;
一旦B某次猜的偏大,A就不再提示,此次之后B猜的偏小A也不会再提示,只回答猜对与否。请问:B至少要猜( )次才能保证猜对?在这种策略下,B第一次猜测的数字是( )。
这道题哥给出了(自认为)正确的答案 (14),(14),但是哥手算了大概10分钟啊~~擦~但是但是!!这题还用泥煤 10分钟?1分钟足矣啊~~
思路如下:
假设我们每次猜数都是猜大了,比如第一次猜数为10;那么如果大了的话,因为猜大了就不再给提示,就会还要猜9次才能保证猜中;如果小了的话,继续猜一个数,保证在这个数猜大了的情况遇到的次数和前者一样,就只能猜19了。依次类推。。。。
假设第一次猜x,第二次则为x+(x-1),直到最后猜(x+x-1+x-2+...+1)>100 (简单的等差数列啊,擦擦~~)
解得最小值 x=14 唉 幸好给出的范围是[1--100],要是[1--1000000]还泥煤的不得数死?
更可气的是,解此题的源代码如下:是如此的简单~~~~!!!
#include <stdio.h>
int main(){
int x = 1 ,sum = 0;
while(1){
sum += x;
if (sum >=10)
{
break;
}
x++;
}
printf("%d\n", x);
}