鏈接:http://poj.org/problem?id=1002
題目:
487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 213742 Accepted: 37232Description
企業喜歡用容易被記住的電話號碼。讓電話號碼容易被記住的一個辦法是將它寫成一個容易記住的單詞或者短語。例如,你需要給滑鐵盧大學打電話時,可以撥打 TUT-GLOP。有時,只將電話號碼中部分數字拼寫成單詞。當你晚上回到酒店,可以通過撥打310-GINO來向Gino's訂一份pizza。讓電話 號碼容易被記住的另一個辦法是以一種好記的方式對號碼的數字進行分組。通過撥打必勝客的“三個十”號碼3-10-10-10,你可以從他們那裡訂 pizza。
電話號碼的標准格式是七位十進制數,並在第三、第四位數字之間有一個連接符。電話撥號盤提供了從字母到數字的映射,映射關系如下:
A, B, 和C 映射到 2
D, E, 和F 映射到 3
G, H, 和I 映射到 4
J, K, 和L 映射到 5
M, N, 和O 映射到 6
P, R, 和S 映射到 7
T, U, 和V 映射到 8
W, X, 和Y 映射到 9
Q和Z沒有映射到任何數字,連字符不需要撥號,可以任意添加和刪除。 TUT-GLOP的標准格式是888-4567,310-GINO的標准格式是310-4466,3-10-10-10的標准格式是310-1010。
如果兩個號碼有相同的標准格式,那麼他們就是等同的(相同的撥號)
你的公司正在為本地的公司編寫一個電話號碼薄。作為質量控制的一部分,你想要檢查是否有兩個和多個公司擁有相同的電話號碼。Input
輸入的格式是,第一行是一個正整數,指定電話號碼薄中號碼的數量(最多100000)。余下的每行是一個電話號碼。每個電話號碼由數字,大寫字母(除了Q和Z)以及連接符組成。每個電話號碼中只會剛好有7個數字或者字母。Output
對於每個出現重復的號碼產生一行輸出,輸出是號碼的標准格式緊跟一個空格然後是它的重復次數。如果存在多個重復的號碼,則按照號碼的字典升序輸出。如果輸入數據中沒有重復的號碼,輸出一行:
No duplicates.Sample Input
12 4873279 ITS-EASY 888-4567 3-10-10-10 888-GLOP TUT-GLOP 967-11-11 310-GINO F101010 888-1200 -4-8-7-3-2-7-9- 487-3279Sample Output
310-1010 2 487-3279 4 888-4567 3Source
East Central North America 1999Translator
北京大學程序設計實習2007
代碼:
#include #include MAX 10000000 map[] = n,num,flag= s[ scanf(,& (i=;i<n;i++ j= num = (j< ch = (ch!= && ch!= && ch!= num=num*+((ch>=&&ch<=)?ch-:map[ch-]- j++ index[num]++ (getchar() != (i=;i<MAX;i++ (j=;j<;j++) s[j]= (index[i]> flag = printf(,(i/),(i% (flag ==) printf( }
思路:
1.建立10000000大小的投票,免除了搜索
2.使用讀字符的方法讀入,並且每一行的不確定性