两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

Dotcpp  >  編程題庫  >  藍橋杯算法提高VIP-Barcodes
題目 1963:

藍橋杯算法提高VIP-Barcodes

時間限制: 2s 內存限制: 192MB 提交: 6 解決: 0

題目描述

Code-11是一種主要用來將標簽編碼為條形碼的編碼方式。被編碼的字符被限制為0-9和'-'號,以及一種特殊的符號:開始和結束標志(開始標志出現在Code-11編碼的最前面而結束標志出現在最后面)。
Code-11的編碼會獨立的編碼每一個字符。一個字符會由5個相鄰的區(qū)域來編碼。每個區(qū)域可能是深色和淺色中的一種,相鄰的兩個區(qū)域的顏色一定不同,每次編碼的第一個區(qū)域的顏色一定是深色的。每個區(qū)域的寬度也不是一定的,我們將寬度總共分為兩種,用0表示一個窄的區(qū)域,用1表示一個寬的區(qū)域。
字符 編碼
0 00001
1 10001
2 01001
3 11000
4 00101
5 10100
6 01100
7 00011
8 10010
9 10000
- 00100
開始/結束標志 00110

因此,字符1被編碼后就會表示成為深色的寬區(qū)域,淺色的窄區(qū)域,深色的窄區(qū)域,淺色的窄區(qū)域,深色的寬區(qū)域這五個區(qū)域。并且,在編碼后兩個相鄰的字符各自編碼出來的五個區(qū)域之間需要用一個淺色的窄區(qū)域將它們隔開。這個淺色的窄區(qū)域的唯一功能就是分割兩個字符編碼出來的區(qū)域。
Code-11這種編碼方式可以簡化我們的編碼和解碼過程,因為他僅需要區(qū)分窄區(qū)域和寬區(qū)域,并且提高了對低打印水平的容忍度。
為了能夠檢驗編碼中出現的錯誤,Code-11在編碼時會用到兩個檢驗字符C和K,并且會把C和K插入到原串的末尾再進行編碼(在結束標志之前)。假設需要被編碼的串有n個字符,分別是c1、c2……cn,那么檢驗字符C的值就應該是sigma( ( ( n - i ) mod 10 + 1 ) * w ( c [i] ) ) mod 11(1<=i<=n)。其中,w(c[i])是字符c[i]的權重。如果c[i]是0、1、2、……9這些字符,那么c[i]的權重就是0、1、2、……9。如果c[i]是'-',那么c[i]的權重就是10。(注意mod的運算優(yōu)先級比+高)
與此對應的檢驗字符K的值是sigma( ( ( n - i + 1) mod 9 +1 ) * w ( c [i] ) ) mod 11(1<=i<=n+1),其中c[n+1]即為檢驗字符C。舉個例子,假設需要被編碼的字符串是123-45,那么我們有C=5和K=2,所以最終需要被編碼的字符串是123-4552,并且有一個開始標志和結束標志分別在頭部和尾部。
一般的簡單的條形碼讀取器會包含數百個小型的CCD傳感器,這些CCD傳感器會識別出深色和淺色區(qū)域以及每一塊的寬度。利用這些信息,解碼器就會將解碼得到被編碼之前的信息。由于條形碼的方向不是固定的,所以無論讀取器是正著掃描的條形碼還是倒著掃描的,解碼器都需要能夠解碼。
你的任務是解碼一個被Code-11編碼過的條形碼。你能夠知道每一塊區(qū)域的寬度,并且寬的區(qū)域的寬度是窄的區(qū)域的寬度的兩倍。但是由于打印設備的不完美,所以讀取的區(qū)域寬度可能跟實際的寬度有5%的誤差。在數據當中不會有編碼前長度為0的字符串。

輸入格式

第一行一個正整數N,代表被編碼后的條形碼的區(qū)域個數。
接下來N個正整數,每行最多十個正整數,代表條形碼每個區(qū)域的寬度。

輸出格式

如果該條形碼無法被成功解碼,輸出"bad code"。
如果該條形碼能被成功解碼但是檢驗字符C的值不正確,輸出"bad C"。
如果該條形碼能被成功解碼且檢驗字符C的值正確但檢驗字符K的值不正確,輸出"bad K"。
如果該條形碼能被成功解碼且兩個檢驗字符均是正確的,輸出不包含檢驗字符和起始結束標志的原字符串。

樣例輸入

59
10 20 20 10 10 10 20 10 10 20
10 10 10 10 20 10 20 10 10 10
20 10 20 10 20 10 20 10 10 10
10 10 20 10 10 10 10 10 10 20
20 10 20 10 10 20 10 10 20 10
10 10 20 10 10 20 20 10 10

樣例輸出

123-45

提示

零基礎同學可以先學習視頻課程,包含C/C++、Python、百練、藍橋杯輔導、算法數據結構等課程,提供視頻講解以及配套習題,還有老師答疑,點擊這里了解課程詳情
標簽