百練 方便記憶的電話號碼

2021-09-22 16:52:46 字數 1920 閱讀 3006

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-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

利用map。

2.注意string不可以直接printf輸出,需要用c_str()轉換成c風格字串。可以用cout直接輸出。

3.此題沒有oj測試,因為排序等問題大概率會te。

#include#include#include#includeusing namespace std;

int digit(char c)

int main(void)

} } /*

string number="";

for(int i=0;i=0)

} } */

it = mp.find(number);

if(it!=mp.end()) (*it).second++;

else mp[number]=1;

} bool flag=false;

for(it=mp.begin();it!=mp.end();it++)

int n;

scanf("%d",&n);

char tel[201];

while (n)

i++;

} t1 = 100 * tmp[0] + 10 * tmp[1] + tmp[2];

t2 = 1000 * tmp[3] + 100 * tmp[4] + 10 * tmp[5] + tmp[6];

count[t1][t2]++;

} bool out = true;

for (int i = 0; i < 1000; i++)

} }if (out) printf("no duplicates.");

return 0;

}

百練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,其中...

方便記憶的電話號碼

總時間限制 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中的乙個數字。有...

Python 方便記憶的電話號碼

問題描述 總時間限制 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中的乙個...