CDUTCM OJ 1598: 進階的01串
題目描述
計算機中的檔案都是由一串01串組成的,我們可以通過某種方式壓縮它。
我們可以用一個十進位制數串(長度不超過1000),代表一個長度不超過8000的01串。例如十進位制串15 1 128代表01串00001111 00000001 10000000。01串可以劃分成連續的片段(即連續成段的0或1),如上例可劃分成0000 1111 0000000 11 0000000五個片斷。我們可以用一個位元組(8位)的二進位制表示一個片斷,表示方法為:位元組的最高位代表此片段的顏色是0還是1,低7位代表此片段的長度,所以上例就可以表示為:00000100 10000100 00000111 10000010 00000111。注意到現在有5個位元組,每個位元組可以用一個不超過255的十進位制數表示,所以我們又可以把它表示成4 132 7 130 7。
我們再看看整個編碼壓縮過程:
15 1 128
00001111 00000001 10000000
0000 1111 0000000 11 0000000
00000100 10000100 00000111 10000010 00000111
4 132 7 130 7
可以保證所有輸入資料連續的0或1片段的長度均小於128。
輸入
輸入資料只有一行,第一個數N是一個可被8整除的不大於8000的自然數,代表編碼的01串長度。接下來N/8個十進位制整數。
輸出
輸出只有一行,輸出最後的十進位制壓縮編碼。
樣例輸入
24 15 1 128
樣例輸出
4 132 7 130 7
按照題意處理即可:
AC程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
|