江寒按了一下電腦電源按鈕,很快顯示器上出現了NOILinux的啟動界面。
這就必須“贊”一下了,往年都是用虛擬機進入Linux的,今年改成原生系統了。
這樣一來,系統的啟動和運行速度,起碼要提高一倍以上。
實際上,有些省份目前還是Windows和虛擬機Linux并行,選手自行選擇趁手的操作系統。
合江省這次竟然走在了全國前列,率先淘汰了大眾熟悉的Windows……
足足等了三十多秒,終于進入了Linux桌面。
江寒先把桌面分辨率等環境參數,調整成了最順手的設置。
然后按下【Alt+Ctrl+T】,調出終端,用“ls”命令查看了一下。
賽組委果然沒有預先建立比賽文件夾,這樣就只能自己動手了。
江寒按照監考教師下發的參賽說明,使用“mkdir”命令建立了一個文件夾,命名為【Jianghan】。
接下來,他又在終端中輸入【vimtest.cpp】,啟動了代碼編輯器vim的IDE界面,然后按“I”鍵進入插入模式。
這樣就可以鍵入代碼了。
這次比賽仍然可以在c、c++、pascal三種程序設計語言中任選一款。
三種語言各有特點,c語言執行效率最高,pascal語法簡單,但稍嫌刻板,好處是不容易犯低級錯誤,c++則更加適合復雜程序的設計。
江寒毫不猶豫地選擇了最為熟悉的c++。
首先完成一個測試代碼。
功能很簡單,就是在標準的“helloworld”基礎上,增加了一個從1加到100的循環程序,然后將結果輸出到屏幕上。
江寒編輯完代碼,稍微檢查了一遍,排除了可能存在的語法錯誤,然后按“ESC”鍵,退出插入模式,再輸入“WQ”存盤退出。
接下來,回到終端中,輸入命令行指令:【g++test.cpp-otest】,回車。
這樣,g++編譯器就開始工作,將test.cpp編譯成了可執行文件test。
編譯過程中,如果有錯誤,就會提示出來。
但江寒這個測試程序十分簡單,并沒有犯任何小錯誤,一次就通過了編譯。
接下來,就可以輸入【./test】,來執行生成的可執行文件了。
稍微觀察了一下,確認程序可以正常運行。
這樣系統的檢測和調整就初步完成。
接下來,進行一些進階的設置。
江寒用【vim~/.vimrc】命令,再次打開vim界面,并加載了配置文件vimrc。
然后修改了一下其中的幾個參數,將vim編輯器的操作模式,調整成了最順手的狀態。
接下來,在自己的比賽文件夾中,創建兩個文本文件:test.i.out。
再修改測試代碼,為其增加文件輸入輸出功能,并添加對頭文件的引用,使其能操作test.i.out。
再次調試正確后,就得到了一份c++模板代碼。
一會兒比賽正式開始,只需要在模板的基礎上,進行一些修改和填補就可以了。
這些都搞定之后,還剩下大約15分鐘時間,比賽才能正式開始。
江寒在vim中隨便輸入了幾個小程序段,快速排序、堆排序、二分查找……進行賽前熱手,以提升手感。
8點20分,監考人員通知大家登陸ftp服務器,用公用賬號和密碼下載試題壓縮包。
江寒只用了30秒,就把試題壓縮包下載到了自己的桌面上,并解壓到了一個文件夾中。
隨后依次點開3道試題的說明文檔,認真查看了起來。
只用了10分鐘,他就將3道題都看完一遍,并理清了解題思路。
然后按照題目難度,排了個序。
巧的是,三道題的編號和難度系數一一對應。
當然這是對于他來說,換個人看,很可能覺得第2題才是最難的……
江寒在【Jianghan】文件夾里,創建了三個子文件夾,按照要求,分別命名為【vigenere】、【game】和【drive】,一會兒為各個題目編寫的代碼,就分別存放于對應的文件夾中。
江寒先看第一題:Vigenère密碼。
這是一個密碼學問題,加密規則很簡單。
密鑰k是一個字符串,K=K1K2K3……Kn,當明文M=M1M2M3……Mn時,加密后的密文為C=C1C2C3……,Ci=Mi⊕Ki。
⊕是一個規則表,26行,26列,每一行代表一種字母替換方式,第一行從A到Z順序排列,第i+1行是第i行循環左移1個字符得到。