poj 1002 (字符串基础)

原创 2012年03月27日 22:02:01
487-3279
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 182479   Accepted: 31389

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. 

第一次做题做到这种想吐得地步,竟然还是被一道洪水题。。。。最后注意输出场宽。。。估计大家都是因为这原因wa吧。。。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>

#define maxn 100100

using namespace std;

const int number[26] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
/*
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
*/
int N,n = 1,ax[maxn];

struct xx{
  int a,b;
  //string ss;
  }ar[maxn];

int in_num()
{

    int num = 0,i,len;
    char st[1000];
    scanf("%s",st);
    len = strlen(st);
    for(i = 0;i < len;i++)
      if (st[i] <='9' && st[i] >= '0'){
          num *= 10;
          num += st[i] - '0';
          }
      else if (st[i] != 'Z' && st[i] != 'Q' && st[i] <= 'Z' && st[i] >= 'A') {
          num *= 10;
          num += number[st[i]-'A'];
          }
    return num;
}

int cmp(xx a1,xx a2)
{
    return a1.a<a2.a;
}

void work()
{
    int i,j,temp,temp1;
    scanf("%d",&N);
    for(i = 1;i <= N;i++) ax[i] = in_num();
    sort(ax+1,ax+N+1);
}

void out_num()
{
    int i,k,t = 1;
    for(i = 1;i <= N;i++) {
      k = 1;
      while(ax[i] == ax[i+1]) {k++;i++;}
      if (k > 1) {t = 0;printf("%03d-%04d %d\n",ax[i]/10000,ax[i]%10000,k);}
      }
      if (t) printf("No duplicates.\n");
}

int main()
{
    work();
    out_num();
    return 0;
}


POJ1002-487-3279

转载请注明出处:優YoU  http://user.qzone.qq.com/289065406/blog/1306848752   大致题意: 中文题,我就不废话了,不过据说某些RP低的同学会...
  • lyy289065406
  • lyy289065406
  • 2011年07月30日 21:36
  • 7864

POJ1002 java版本

import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; class Main{ ...
  • zhangfeng12345677
  • zhangfeng12345677
  • 2017年04月09日 00:25
  • 219

算法日记(Java实现)第20160715(1)期——POJ1001/POJ1002

今日题目:POJ1001、POJ1002 (一)POJ1001 题目地址:http://poj.org/problem?id=1001 1.首先考虑内置类型是否能用,显然不能用。发现内置doub...
  • cao610374598
  • cao610374598
  • 2016年07月15日 15:28
  • 605

poj1002的java实现

import java.io.BufferedInputStream;    import java.io.DataInputStream;    import java.io.IOExcepti...
  • caihongshijie6
  • caihongshijie6
  • 2013年04月15日 09:09
  • 1438

POJ1002 487-3279

POJ上的一道题目:企业想拥有令人难忘的电话号码。要一个电话号码让人容易记住,方法之一是号码里面有一个难忘的单词或词组拼写。例如,您可以拨打TUT- GLOP拨打沃特卢大学。有时电话号码只有一部分是单...
  • xuzewei_2
  • xuzewei_2
  • 2013年09月03日 15:12
  • 3353

poj 1002 487-3279 ((含易错点、测试数据) 简单模拟 )

题目大意: 把大写字母按照对应关系转换成数字,统计每个电话号码出现的次数,按号码升序输出那些有重复的。 思路: 用字符串数组接收输入,转换成七个数字的同时表示成一个七位数,方便比较。 全部转换完后...
  • YZBYZZ
  • YZBYZZ
  • 2013年04月08日 19:05
  • 2332

POJ 1002 (字符串 && 模拟)

URL: http://poj.org/problem?id=1002 题目大意: 有n个不同的电话号码(由7个有效字符和一些横线构成),其中可能含有大写字母或数字。将大写字母通过一定的规...
  • suncongbo
  • suncongbo
  • 2017年06月25日 23:26
  • 274

北大ACM poj1002 487-3279

487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 191845   Acc...
  • gubojun123
  • gubojun123
  • 2012年07月28日 21:19
  • 3832

poj百练 1002

一开始我没看清题目要求的输出是
  • qq_17502787
  • qq_17502787
  • 2014年10月26日 12:46
  • 734

北大在线测试系统(POJ)第1002题

原题请参考:http://poj.org/problem?id=1002   这个题目我写了好几个版本的C程序,虽然都Accepted,但普遍用时较多,还需要进一步优化。下面这个程序是其中的一个,本...
  • bufanq
  • bufanq
  • 2018年02月04日 21:05
  • 71
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1002 (字符串基础)
举报原因:
原因补充:

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