1002:方便記憶的**號碼
檢視 提交 統計 提示 提問
總時間限制: 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.」。
樣例輸入
124873279
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-3279
樣例輸出
310-1010 2
487-3279 4
888-4567 3
思路:將輸入的每一行字串(帶有數字,字母,以及『-』)轉化為只有0-9的數(注意是乙個數),這個數最多7位。再記錄這些數出現的次數。最後將這些書排序,再輸出這些數(出現次數》=2的),以及出現的次數。如果輸入的所有行並沒有這樣的數(出現次數》=2的),那就輸出no duplicates.
以下是ac**:
#include
#include
#include
#include
#include
#include
using namespace std;
int document[
10000000
],b[
100010];
//對於該陣列的大小,我一直wa,原來是陣列開小了,哭,所以要注意!
inttransfm
(char a[
200]
)//此函式用於將每一行輸入的字串,轉化為的數字(按照題目的規則)
return result;
}int
main()
sort
(b,b+k)
;//排序
int flag=0;
for(i=
0; i)while
(b[i]
==b[i+1]
&&i+
1i++;}
if(flag==0)
cout<<
"no duplicates.\n"
}
這道題不是怎麼難,就是錯了好多次。我一開始的思路是將每一行輸入的字串轉化為數字,再將其轉化為字串(目的是為了輸出位數不夠7的前面的0),可是後來想起來,可以利用輸出格式。真的是蠢到家了。 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中的乙個數字。有時為了方便記憶 號碼,我們會將 號碼的數字轉變為英文本母,如...
1002 方便記憶的電話號碼
1002 方便記憶的 號碼 檢視 提交 統計 提示 提問 總時間限制 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 ...
百練1002 方便記憶的電話號碼
1002 方便記憶的 號碼 總時間限制 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,其中...