趣读网 > 玄幻奇幻 > 大脑超聪明 > 第十五章,算出来了

第十五章,算出来了

    “老师,我写好了。”

    “我也做出来了。”

    “老师,答案是11010……”

    老师摆了摆手:“先别说答案,还有不少人没做完呢!”

    “你说好做完就能下课的!”

    “对,下课!”

    教室里顿时闹腾起来,老师无奈地看了看表,发现离下课还有二十多分钟,他也没想到有不少人写得这么迅速,或许是他和祝齐两人,用一问一答的方式梳理了这道题的缘故,不少人都一边听,一边写着代码,有了思路,代码就像打印出来一样。

    “好,同学们静一静,做得太快也不好啊,哈哈,我还以为你们都不怎么懂呢。已经做完的举下手?”

    祝齐骄傲地举起了手,他回头看了看,不少人刚求出了结果,也缓缓地举起了手。

    “不错,已经不少了,唔……我们来个少知识证明,在不向没做完的同学透露答案的情况下,算出二进制结果的同学们和我对下答案,你们数一数开头和结尾各五位,其中有多少个0?”

    祝齐记着刚才脑海中浮现出的那一长串二进制数字,他说道:“3个!”

    “3!是3个不错,哦~居然是祝齐第一个回答出来了。同学们再次给祝齐鼓掌啊。答案是3个的可以提前下课了。”

    老师赞赏地点点头,鼓起了掌,不过祝齐在班级里存在感不高,跟着鼓掌的没有几个,倒是一堆人赶忙收拾桌椅下课走人。

    “我去,祝齐你这几天变好学生了啊,给我抄下代码。”祝齐的舍友马庆旭拍了拍他。

    “也给我看看,我的算出来怎么数都是4个0。“齐乘峰接着附和。

    “我也一样!”

    祝齐一脸尴尬,他的屏幕上什么也没有,连编译器都还没打开,何谈代码?真要让他写代码的话,刚才被老师指点了那么久,他也不是写不出来。

    奈何……他算出来了。

    具体来说,他只要一在大脑思考怎么存储变量,计算的每个步骤,还没抬手写出代码,他的大脑就能自动把十多亿的数字变成一长串的01。

    祝齐撑着下巴,尴尬地说道:“呃,不好意思,我没写。”

    “没写?哥你不是这样的人,别骗我了,你没写怎么算出来的?”

    “你该不会是蒙的吧?”

    “唉,祝齐你变了。”齐乘峰说着,自己专心看起了代码,突然拍着脑袋叫了一声:“原来把0写成1了,我说呢。好了,我的也对了。”

    “峰哥,峰哥!”

    “给。”

    简短的一个字,峰哥的形象就在舍友心中光芒万丈。

    “老师,再出点题吧,好无聊。”

    这句话如同平地惊雷一样,直击了所有人的灵魂,祝齐抬头看去,正是又一次坐在第一排的程羽。

    “我去,快点做出来快走,别等老师反应过来了!”齐乘峰连忙催促着其他几个舍友,看到祝齐,又说道:“祝齐,你不是第一个答对的吗,怎么还不走?”

    “啊……我在想一些事情,忘记了。”

    已经来不及了,老师微笑着看向程羽,果然是好学生,他点点头,说道:“出题?你做的题和别人不是一个水平的呀,现在课程也没教多少……”

    说罢,老师沉思起来,趁这个空挡,齐乘峰和其他舍友已经收拾好东西,准备悄悄溜出去。

    “祝齐,不走吗?”

    “不急,我想看看能出什么题目……”

    齐乘峰拍了拍祝齐肩膀:“你小子是不是被程羽同化了?不可救药,我们先回宿舍了。”

    “唉,儿大不由爷。”马庆旭感叹着。

    祝齐的舍友们刚走出教室,老师的沉思就结束了:“现在还有二十分钟下课,基于大家的能力,我出一道加减乘除水平的题目吧,同学们可以自愿留下来做,有人知道3X+1吗?”

    程羽的话音有些兴奋:“科拉茨猜想?”

    “不要剧透啊,程羽,你先去写一个标准模板,记住,时间复杂度和稳健性要好。”

    听到他们的话,祝齐心里有些期待,听着像是个很有名的问题,都用老外人名来命名了。

    “3X+1的题目很简单,我们随便选一个正整数,如果它是偶数,就除以2,如果是奇数,我们就乘以3再+1,接着用新得到的数继续执行一次计算,我们要看这个数是一直变大,还是会变小,直到变成1。好了,以上就是3X+1问题的全部了。很简单吧?”

    简单,肯定不简单呀,祝齐心里暗暗嘀咕。

    “这次我就不给大家讲逻辑了,请大家自己去思考3X+1该怎么转成计算机代码,下课前能写完就给我看看,不能写完也没关系。我设的范围是,请大家找出10亿以内的,重复上面计算步数最多的数。”

    说完,老师便从讲台上起身,坐在了程羽的旁边,和他说说笑笑,不知道在讨论什么。

    机房里,有一些人仍没做完二进制的题,也有一些人留下来思考这道3X+1问题,初看题目,简单得有些不像话,也的确只有加减乘除这些小学二年级教科书的水平,但是当他们心算或用计算机试验了下后,又都吃惊起来。

    例如9,它是奇数,乘3+1之后是28,是偶数除以2,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

    是的,只是一个9,就如同过山车一样经历了二十步计算,这简直就像魔法!

    祝齐也吃了一惊,不过他吃惊的是自己的大脑反应速度,在最初的几步计算时,他还是在用自己的大脑一步一步计算,有时候还得回想乘法口诀表。

    但是当他将注意力集中在拆分每一步计算,把判断一个数是奇数和偶数只用看末尾一位也细化出来后,就像大脑开了穿山隧道,在想到一个数后,他就直接给出了答案。

    没有任何的思考时间!

    十亿以内,也就是说,他只需要将这个计算过程,从1开始,一直重复到十亿就可以了,对吧?

    就用刚才老师教过他的,他只需要在脑海中放置一个数,每次计算完一轮,他就将这个数加一,周而复始,直到这个数加到1000000000为止,祝齐特意数了数,一共九个0。

    祝齐吸了口气,闭上眼睛,又慢慢地呼出一口气,再睁开了自己的眼睛,他不自主地笑了起来。

    他已经算出来了。

    程羽正在写着自己的算法,如果只是将文字转成代码的话,很简单,最多需要注意的问题就是防止32位数值int溢出罢了。但是,十亿是个对计算机来说也非常大的数字,稍微有些追求的人,看到十亿,就会条件反射地想到要优化计算时间。

    程羽稍微回忆自己的经验,就想到一些基本的优化方法,一个奇数乘3,还是奇数,加1就是偶数,所以一个奇数可以直接乘3+1再除2,不必判断奇偶。如果是2的n次方,就不用每次都判断是否偶数,他只用维持一个筛查表,只计算被筛除过的数。

    但再往前,对程羽也有些难,对于大量计算,增加更多判断条件,本身也是计算负担,再向前进行任何优化,都像在计算芯片嘴里拔牙一样困难。

    任课老师也坐在程羽旁边,不时给出指导。他也想看看,程羽能有什么好主意。

    “老师,我算出来了,十亿内,步数最多的是670617279,有986步。”

    程羽本在深入思考中,也被吸引,看向说话的人,有谁能算得这么快?

    在程羽仔细的打量中,一个其貌不扬的男生第一次进入了他的视线。

温馨提示:按 回车[Enter]键 返回书目,按 ←键 返回上一页, 按 →键 进入下一页,加入书签方便您下次继续阅读。