杭電2028 2032總結

2021-06-01 07:23:24 字數 784 閱讀 6816

本次練習是c語言程式設計練習的最後一套。

2028:本題的核心是編寫乙個求最大公約數的函式(利用歐幾里得演算法),求得了兩個數的最大公約數,就可以求得兩個數的最小公倍數。

多個數的最小公倍數,利用如下原理求得,求a1,a2...an 的最小公倍數,令n是 a1,a2...an-1 的最小公倍數,則要求的最小公倍數是n與an的最小公倍數。

2029:本題是驗證字串是否回文,不需要遍歷整個字串,只需要在strlen(s)/2 之前驗證就可以了。

迴圈如下:while ( j < strlen(s) / 2 && s[ j ] != s[ strlen( s ) - 1 - j ] )  j++;

當跳出迴圈後,判斷 j 的值,如果 j 等於strlen(s)/2 ,則在strlen(s)/2 之前的字元都是滿足回文的條件的,所以可以斷定該字串是回文的。如果 j 的值不是 strlen(s)/2 ,則在strlen(s)/2 前就有字元不滿足回文的條件了,所以可以斷定該字串不是回文的。

2030:乙個漢字需要兩個位元組來表示,而且是兩個複數來表示。因為除了漢字,沒有字元對應的整數值是負數的,所以字串中的負數一定是偶數個的,而且是兩個相鄰成對出現的。本題的本質就是遍歷字串,求出負整數的個數,然後除以2求得漢字的個數。

2031:簡單的進製轉換。對於負數,先把它轉化成它的相反數,然後用乙個布林變數記錄它的符號。如果是負數,就在輸出的時候多輸出乙個負號,這樣就把問題轉化成只需要處理整數了。用乙個整型陣列記錄轉換後的整數值,在用乙個字串 "0123456789abcdef" ,對應每個整數值的輸出。

2032:用二維陣列。

杭電2014 2020總結

昨天天氣不太好,一整天都沒有陽光,導致我的心情也有點鬱悶,沒有把昨天本該做的題做完,該寫的部落格寫完,就把任務拖到了今天了。2014 本題需要用到累加和遍歷求極值的技巧。用大一時王sir的話說,就是開設乙個 擂台 遍歷一遍資料,誰最 極 的,誰就登上擂台。如果要求記錄極值的位置,還需要在開設乙個記錄...

杭電2041 2044 2046總結

有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少種走法?輸入資料首先包含乙個整數n,表示測試例項的個數,然後是n行資料,每行包含乙個整數m 1 m 40 表示樓梯的級數 對於每個測試例項,請輸出不同走法的數量 2044 輸入資料的第一行是乙個整數n,表示測試例項的...

杭電「菜鳥杯」總結

12月18日,杭電菜鳥杯開賽。這次學校的幾個人沒有集中比賽。jay回家了,在家裡做。我在實驗室一邊。等到12點後才另有幾個人過來,幫他們開了另一邊的實驗室。於是shadowright等就在另一邊做了。還有其他的幾個在宿舍做。比賽開始後瀏覽了幾道題,發現都是比較短的,難度還不是很確定,還沒參加過菜鳥杯...