poj1002

原创 2016年06月01日 00:36:52

487-3279

Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 274609 Accepted: 49004

Description
Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word or phrase. For example, you can call the University of Waterloo by dialing the memorable TUT-GLOP. Sometimes only part of the number is used to spell a word. When you get back to your hotel tonight you can order a pizza from Gino’s by dialing 310-GINO. Another way to make a telephone number memorable is to group the digits in a memorable way. You could order your pizza from Pizza Hut by calling their “three tens” number 3-10-10-10.

The standard form of a telephone number is seven decimal digits with a hyphen(以连字号连接) between the third and fourth digits (e.g. 888-1200). The keypad(按键) of a phone supplies the mapping of letters to numbers, as follows:

A, B, and C map to 2
D, E, and F map to 3
G, H, and I map to 4
J, K, and L map to 5
M, N, and O map to 6
P, R, and S map to 7
T, U, and V map to 8
W, X, and Y map to 9

There is no mapping for Q or Z. Hyphens are not dialed, and can be added and removed as necessary. The standard form of TUT-GLOP is 888-4567, the standard form of 310-GINO is 310-4466, and the standard form of 3-10-10-10 is 310-1010.

Two telephone numbers are equivalent if they have the same standard form. (They dial the same number.)

Your company is compiling a directory of telephone numbers from local businesses. As part of the quality control process you want to check that no two (or more) businesses in the directory have the same telephone number.

Input
The input will consist of one case. The first line of the input specifies the number of telephone numbers in the directory (up to 100,000) as a positive integer alone on the line. The remaining lines list the telephone numbers in the directory, with each number alone on a line. Each telephone number consists of a string composed of decimal digits, uppercase(以大写字母印刷) letters (excluding Q and Z) and hyphens. Exactly seven of the characters in the string will be digits or letters.

Output
Generate a line of output for each telephone number that appears more than once in any form. The line should give the telephone number in standard form, followed by a space, followed by the number of times the telephone number appears in the directory. Arrange the output lines by telephone number in ascending lexicographical(辞典编纂的) order. If there are no duplicates in the input print the line:

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

Sample Output

310-1010 2
487-3279 4
888-4567 3

Source
East Central North America 1999

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
char temp[128];
int tel[10000000];
int tem;
int f;
int num[] =   
{  
    2, 2, 2,  
    3, 3, 3,  
    4, 4, 4,  
    5, 5, 5,  
    6, 6, 6,  
    7, 0, 7, 7,  
    8, 8, 8,  
    9, 9, 9  
};  
//map<int ,int> tel;
int main(){
    int n,i,j,len,cnt;
    memset(tel,0,sizeof(tel));
    scanf("%d",&n);
    for ( i = 0; i < n; ++i)
    {
        len=0;
        scanf("%s",temp);
        //cin>>temp;
        len=strlen(temp);
        tem=0;
        for(j=0;j<len;j++){

            if((temp[j]>='A'&&temp[j]<'Z'&&temp[j]!='Q')||(temp[j]>='0'&&temp[j]<='9')){
                if (temp[j]>='A'&&temp[j]<'Z')
                {

                    tem=tem*10+num[temp[j]-'A'];
                }
                else
                tem=tem*10+temp[j]-'0';
            }


        }

        tel[tem]++;
        //tel[tem]++;
    }

    f=0;
/*  for(map<int, int>::iterator it = tel.begin(); it != tel.end(); it++)
        if(it->second > 1)
        {
            f = true;
            printf("%03d-%04d %d\n", it->first / 10000, it->first % 10000, it->second);
        }*/
    for ( i = 0; i <= 9999999; ++i)
            {
                if(tel[i]>1){
                    f=1;
                    printf("%03d-%04d %d\n", i/10000, i%10000, tel[i]);
                }
            }       
    if(!f)
        puts("No duplicates.\n");
    return 0;

}
版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

POJ1002源代码

poj1002代码

  • 2014-11-02 15:51
  • 398KB
  • 下载

POJ-1002-487-3279

一道很坑的水题,测试数据非常诡异,如果不用stl基本一直就是TLE的状态。 然后输出要注意前导零的控制,但是我在题目里并没有发现这一点(?),一直WA查了别人的题解才发现的。 有热心的朋友请帮我指...

poj 1002源码

poj_1002 487-3279 快速排序

本题的基本思路就是将字符串转化为整数,经过快速排序后,再从头找重复的电话号码。 下面的代码中,快速排序直接使用库函数(需要stdlib.h),可以毫无压力地通过,时间大致为550ms左右。 #incl...

POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题

题意:给你许多串字符串,从中提取电话号码,输出出现复数次的电话号码及次数。 以下是我艰难的AC历程:(这题估计是我刷的题目题解次数排前的了。。。) 题目不是很难理解,刚开始想到用map,但stl的ma...
  • hcbbt
  • hcbbt
  • 2013-07-31 10:30
  • 1810

uva 755 poj 1002 487-3279

题意: 给一堆只有数字  大写字母除(Q,Z)外和字符‘-’    组成的字符串    他们的标准形式是如   123-1234   最后要求判断标准形式是否与重复的电话号码   有重复的输出标准形式...

POJ1002算法解析

POJ1002487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 294236 Accep...

北大ACM poj1002 487-3279

487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 191845   Acc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)