#1554: a002的思路


1360241-1@g.puiching.edu.mo (S3C41羅天逸)

School : No School
ID : 2134
IP address : [192.168.120.33]
Last Login :
2024-11-01 10:15:01
a002. 電話客服中心 -- 板橋高中教學題 | From: [192.168.120.33] | Post Date : 2024-05-21 20:57

我的解題思路:

通過提到的求檢查碼方法,測試所有可能性(即:第一位大寫字母是A-Z),檢查求出來的檢查碼與輸入資料已有的末位檢查碼是否相同,如果相同便輸出該英文字母。

 

具體實操:

 

創建一個array,放入A-Z分別代表的數字大小(比如A代表10,然後需要把十位乘以1,個位乘以10,並相加,所以得出1,所以這個array的第一項是1)

 

給大家完整的表格,因為這個運算沒有任何技術含量:

 

int results[] = {

        1, 10, 19, 28, 37, 46, 55, 64, 39, 73, 82,

        2, 11, 20, 48, 29, 38, 47, 56, 65, 74, 83,

        21, 3, 12, 30

    };

然後,把輸入的前八位資料分別乘以8,7,6,5,4,3,2,1,得出一個數值

下一步,重複執行26次,把result中的第[i]加得出的數值中,如果這個最終數值c==檢查碼 or c==10 and 檢查碼==0 就輸出該英文字母。

 

第二個難點:如何輸出英文字母。

提示:因為char(一個數值) 會把那個數值在ASCII編碼中所對應的字母輸出,而且A-Z由65開始,是順序的

 

所以,如果要輸出A,就可以寫:char(65+i) 因為i會從0-25地變換,如果i==0的時候便通過檢測,説明A是其中一個可能的首字母,所以65+0==65,就會輸出'A'

 
ZeroJudge Forum