問題描述:
總時間限制: 2000ms 記憶體限制: 65536kb
描述英文本母(除q和z外)和**號碼存在著對應關係,如下所示:
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
標準的**號碼格式是***-***x,其中x表示0-9中的乙個數字。有時為了方便記憶**號碼,我們會將**號碼的數字轉變為英文本母,如把263-7422記成america。有時,我們還加上「-」作為分隔符,如把449-6753記成hi-world。當然,我們未必要將所有的數字都轉變為字母,比如474-6635可以記成iphone-5。
總之,乙個方便記憶的**號碼由數字和除q、z外的英文本母組成,並且可以在任意位置插入任意多的「-」符號。
現在 ,我們有乙個列表,記錄著許多方便記憶的**號碼。不同的方便記憶的**號碼可能對應相同的標準號碼,你的任務就是找出它們。
輸入
第一行是乙個正整數n(n <= 100000),表示列表中的**號碼數。
其後n行,每行是乙個方便記憶的**號碼,它由數字和除q、z外的英文本母、「-」符號組成,其中數字和字母的總數一定為7,字串總長度不超過200。
輸出
輸出包括若干行,每行包括乙個標準**號碼(***-***x)以及它重複出現的次數k(k >= 2),中間用空格分隔。輸出的標準**號碼需按照公升序排序。
如果沒有重複出現的標準**號碼,則輸出一行「no duplicates.」。
樣例輸入
12
4873279
its-easy
888-
45673-
10-10-
10888
-glop
tut-glop
967-11-
11310
-gino
f101010
888-
1200-4
-8-7
-3-2
-7-9
-487
-3279
樣例輸出
310
-1010
2487
-3279
4888
-4567
3
#encoding:utf-8
deftransform
(s):
#轉換為標準形式***-***x
temp = s.replace(
'-','',
-1) templist =
list
(temp)
templist.insert(3,
'-')
temp =
''.join(templist)
return temp
defjudge
(s):
#將英文本母全部轉化為數字
temp = s
dict =
for i in
range
(len
(s))
:if s[i]
in dict:
temp = temp.replace(s[i]
,str
(dict[s[i]])
) temp = transform(temp)
if temp in results:
results[temp]+=1
else
: results[temp]=1
n =eval
(input()
)nums =
results =
flag =
false
for i in
range
(n):
input()
)for i in
range
(n):
if nums[i]
.replace(
'-','')
.isdigit():
#不含英文本母
temp = transform(nums[i]
)if temp in results:
results[temp]+=1
else
: results[temp]=1
else
: judge(nums[i]
)resultslist =
sorted
(list
(results.keys())
)#按照號碼公升序輸出
for item in resultslist:
if results[item]
>1:
flag =
true
print
(item+
' '+
str(results[item]))
ifnot flag:
print
("no duplicates."
)
#include
#include
#include
#include
#include
using
namespace std;
char
convert
(char c)
intmain()
res.
insert(3
,1,'-');
++telp_count[res];}
mapint>
::iterator map_it = telp_count.
begin()
;for
(;map_it != telp_count.
end();
++map_it)
if(map_it-
>second >=2)
if(!flag)
cout <<
"no duplicates."
<< endl;
return
0;
以及python滿分**:
def
convert
(c):
if c <=
'c':
return
2elif c <=
'f':
return
3elif c <=
'i':
return
4elif c <=
'l':
return
5elif c <=
'o':
return
6elif c <=
's':
return
7elif c <=
'v':
return
8elif c <=
'y':
return
9n =
eval
(input()
)nums =
flag =
false
results =
for i in
range
(n):
input()
)for i in
range
(n):
res =
''for j in
range
(len
(nums[i]))
:if nums[i]
[j]>=
'0'and nums[i]
[j]<=
'9':
res = res.__add__(nums[i]
[j])
elif nums[i]
[j]>=
'a'and nums[i]
[j]<=
'z':
res = res.__add__(
str(convert(nums[i]
[j])))
temp =
list
(res)
temp.insert(3,
'-')
temp =
''.join(temp)
results[temp]
= results.setdefault(temp,0)
+1resultslist =
sorted
(list
(results.keys())
)#按照序列輸出
for item in resultslist:
if results[item]
>1:
flag =
true
print
(item+
' '+
str(results[item]))
ifnot flag:
print
("no duplicates."
)
方便記憶的電話號碼
總時間限制 2000ms 記憶體限制 65536kb 描述 英文本母 除q和z外 和 號碼存在著對應關係,如下所示 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 標準的 號碼格式是 x,其中x表示0 9中的乙個數字。有...
百練 方便記憶的電話號碼
2000ms 65536kb 英文本母 除q和z外 和 號碼存在著對應關係,如下所示 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 標準的 號碼格式是 x,其中x表示0 9中的乙個數字。有時為了方便記憶 號碼,我們會將...
1002 方便記憶的電話號碼
英文本母 除q和z外 和 號碼存在著對應關係,如下所示 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 標準的 號碼格式是 x,其中x表示0 9中的乙個數字。有時為了方便記憶 號碼,我們會將 號碼的數字轉變為英文本母,如...