天天看點

第一次ACM選拔賽

6月26日是個值得紀念的日子,我們于六點在ZCMUOJ開展了第一次ACM選拔賽。七道題最後才A了三道。深深感覺到自己的弱菜和基礎不牢。

第一題為輸出一個整數的各位數字(http://acm.zcmu.edu.cn/JudgeOnline/problem.php?cid=1188&pid=0),我竟然沒A,對于大資料要牢記使用字元數組,格式必須注意,最後一個輸出時不帶空格就分兩次輸出,可以巧用flag;

第二題為求完數,注意包含1的特殊情況細節,

第三題為10->16進制轉換,對于基礎掌握要牢固,可以直接用%X輸出,但是這樣太沒難度了,如果用while循環+%運算+字元和整型轉換會更有趣一點;

第四題為周期串,周期串emmm···是困擾我蠻久的問題,%和周期性的聯系之前一直沒搞懂,在循環隊列的時候疑惑就存在了,還有二次循環探測,j%i是第二周期的開頭。問了幾個朋友,摘錄回答如下:

  1. 循環周期為i,則第一個周期的所有字元下标依次為0到i-1,是以下标為i的字元自然為第二周期的首字元。j mod i的值結果隻能在0到i-1之間,是以str[j]與str[j%i]的比較即是将目前下标為j的字元與第一個周期的所有字元進行比較(因為j的初值為i,是以j mod i的值必定依次為0到i-1)。j的值是從i到len,那麼j從i到2i-1走完一個周期後,必定走到下一個周期,然後再走到下一個周期。如果該字元串滿足循環字元串的條件,那麼j的終值必為len,否則跳出。是以你的程式在判斷該字元串是否為循環字元串時應該還需要添加一個條件,即需判斷j的終值是否為len,如果不是len,這說明該字元串不是循環字元串。
    • 紙上示範一下。
    • 因為周期性的含義就是會重複出現,當然要用%運算呀,用%運算,你才能知道它第二個周期第一個字元的位置,周期性比對問題往往都會用到%運算,它這個是二重循環周遊是以情況,分别枚舉長度,

      如果不比對,就每次向右移動一個字元,j是枚舉周期串最後一個字元在哪個位置,i是枚舉周期串第一個字元,然後因為有周期性,是以要%運算。

    • 不是前一個周期,是取周期為i的第一個周期,這樣做的目的是檢測後幾個周期是否都與第一個周期相同。

第五題為小孩報數,和約瑟夫環/丢手絹問題有異曲同工之妙,可以用循環連結清單,然而資料結構沒學好,Sad···也可以用數組裝···http://www.docin.com/p-513583501.html有類似題解,待會看。

第六題為三個家庭,注意了解題意;

第七題為大數階乘的位數統計,貌似有公式,開個大數組,手動模拟log10(i)的累加···還要仔細看看才行。