第136章 不,你的這條才是(第1/2頁)
章節報錯
在配對的過程中,徐佑也考慮到了,2和5出現的數量問題。
無疑,2的個數一定是多於5的個數的。
這樣一來,問題就變成了,統計階乘數里有多少個5這個因子。
“等一下……像25、125這樣的數字,裡面其實是包含不止一個5的因子的。”
徐佑很快注意到了這一重要的問題。
如果忽略這個情況,那最後的結果就會出現錯誤。
最終,徐佑在電腦上,編輯出了短短的五行程式碼,並給彭俊傳送了過去。
“不錯啊!”
在看到徐佑發來的程式碼後,彭俊也不禁對徐佑的解答表示著肯定。
雖然這道題不算什麼難題。
但能在幾分鐘的時間內,給出如此漂亮的答案。
彭俊知道,大部分計算機專業的本科生,也是未必能做到的。
“這孩子,應該是自己做出來的吧。”
彭俊相信,既然徐佑向自己尋求題目,按理說肯定不會去搜尋答案的。
但為了進一步確定徐佑的能力,彭俊決定,再給徐佑出一個難題,還是那種網上根本搜不到的題目。
“不錯,做得很好,程式碼也很簡潔。再給你發一道難度更大的題目吧。”
這一次,彭俊將一道自己改編過的題目,向徐佑傳送了過去。
看著這道新的題目,徐佑很快陷入到思考之中。
“給出k個有序的陣列:L1,L2,……,Lk,每一個長度為n,可以對該陣列進行線性時間的預處理。然後回答如下詢問:給出x,回答每個陣列中第一個小於x的元素是什麼?”
這一次,徐佑也確實感到了,題目難度的提升。
要是徐佑這些天沒有學完這些門課程的話,估計是連題目都看不懂的。
徐佑首先想到的方法,是對於每個陣列二分查詢。
但這樣的話,複雜度會非常高,達到了O(klogn)。
很快,徐佑便找到了另外的一個思路。
“如果用Cascading的話,就可以將複雜度降低到O(k+logn)了。”
所謂的Cascading,也就是分散層疊演算法,可以對經典分塊問題進行大大的最佳化。
按照這個思路,徐佑重新進行演算法的構思,並很快整理出了一套全新的方案。
“這樣一來,只要第一次使用二分,之後每次都是常數查詢就可以了。”
完成了演算法資料結構的編輯後,徐佑將自己的解法傳送給了彭俊。
看見徐佑的答案,彭俊又是不禁連連點頭。
“這小子,還真不是在跟我開玩笑。能做到這個水平,絕對是把這些課程都學透了的。”
這個時候,彭俊也不得不對徐佑的學習能力盛讚了起來。
彭俊並不知道,徐佑到底是如何在這短短的十天時間裡,把幾乎整個計算機本科階段的知識都學習完畢,同時很好的掌握了這些知識。
就算是每天花出十幾個小時的時間,甚至都不夠把這些課程全部都看一遍的。
但徐佑既然能夠做到,說明他肯定有自己獨特的學習方法。
“不錯,這個問題的回答也很好,不僅能夠解決問題,而且演算法的最佳化程度也很不錯。徐佑,你是我見過學的最快的一個學生了。”
雖然這只是彭俊隨便出的一道題,還不能完全考察徐佑的計算機知識能力。
但既然隨便出一道題,徐佑都能做得這麼好,那徐佑多半是把大部分知識都掌握了的。