第十五章,算出来了
“老师,我写好了。”
“我也做出来了。”
“老师,答案是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步。”
程羽本在深入思考中,也被吸引,看向说话的人,有谁能算得这么快?
在程羽仔细的打量中,一个其貌不扬的男生第一次进入了他的视线。
“我也做出来了。”
“老师,答案是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]键 返回书目,按 ←键 返回上一页, 按 →键 进入下一页,加入书签方便您下次继续阅读。