PKU POJ 1002 487-3279 水题

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int a[100005];
int t(char c)
{
    if(c<'Q')
        return (c-'A')/3+2;
    else
        return (c-'B')/3+2;
}
int trans(char s[])
{
    int res=0;
    for (int i=0;i<strlen(s);++i)
    {
        if(s[i]>='0'&&s[i]<='9')
            res=res*10+s[i]-'0';
        else if(s[i]>='A'&&s[i]<='Y')
            res=res*10+t(s[i]);
    }
    return res;
}
int main()
{

    int i,n,cnt;
    char s[1000];
    bool f=true;
    scanf("%d",&n);
    for (i=0;i<n;++i)
    {
        scanf("%s",s);
        a[i]=trans(s);
    }
    sort(a,a+n);
    a[n]=-1;
    for (i=0,cnt=0;i<n;++i)
    {
        ++cnt;
        if (a[i]!=a[i+1])
        {
            if(cnt>1)
            {
                f=false;
                printf("%03d-%04d %d\n",a[i]/10000,a[i]%10000,cnt);
            }
            cnt=0;
        }
    }
    if(f)
        printf("No duplicates.\n");
    return 0;
}

 

posted on 2013-03-14 21:13  Deller  阅读(143)  评论(0)    收藏  举报

导航