Read Phone Number

/*
 * =====================================================================================
 *
 *       Filename:  readphonenumber.c
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  2014年02月16日 10时16分13秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Wenxian Ni (Hello World~), niwenxianq@qq.com
 *   Organization:  AMS/ICT
 *
 * =====================================================================================
 */


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void PrintNumber(char n, int m)
{
    int i;
    switch(m)
    {
        case 1:
            break;
        case 2:
            printf("double ");
            break;
        case 3:
            printf("triple ");
            break;
        case 4:
            printf("quadruple ");
            break;
        case 5:
            printf("quintuple ");
            break;
        case 6:
            printf("sextuple ");
            break;
        case 7:
            printf("septuple ");
            break;
        case 8:
            printf("octuple ");
            break;
        case 9:
            printf("nonuple ");
            break;
        case 10:
            printf("decuple ");
            break;
        default:
            break;
    }
    switch(n)
    {
        case '0':
            printf("zero");
            break;
        case '1':
            printf("one");
            break;
        case '2':
            printf("two");
            break;
        case '3':
            printf("three");
            break;
        case '4':
            printf("four");
            break;
        case '5':
            printf("five");
            break;
        case '6':
            printf("six");
            break;
        case '7':
            printf("seven");
            break;
        case '8':
            printf("eight");
            break;
        case '9':
            printf("nine");
            break;
        defalut:
            break;
    }
}
void ReadNumber(char *q, int n)
{
    if(n==1)
    {
        PrintNumber(*q, 1);
        return ;
    }
    char *p = q+1;
    int i = 1;
    int m = 1;
    for(i=2;i<=n;p++,i++)
    {
        if(*p==*(p-1))
        {
            m++;
        }
        else
        {
            PrintNumber(*(p-1), m);
            printf(" ");
            m = 1;
        }
    }
    PrintNumber(*(p-1), m);
}

int main()
{
    int T;
    int ncase;
    int lens;
    char numberPhone[200];
    char splitNumber[400];
    char *buf, *nub, *spl;
    freopen("in.in","r",stdin);
    freopen("out.in","w",stdout);
    while(~scanf("%d",&T))
    {
        ncase=1;
        while(ncase!=T+1)
        {
            scanf("%s",numberPhone);
            scanf("%s",splitNumber);
            printf("Case #%d: ",ncase);
            nub = numberPhone;
            spl = splitNumber;
            buf = strstr(spl,"-");
            lens = 0;
            while(buf!=NULL)
            {
                buf[0]='\0';
                nub += lens;
                lens = atoi(spl);
                ReadNumber(nub,lens);
                spl = buf + 1;
                buf = strstr(spl,"-");
                printf(" ");
            }
            nub += lens;
            lens = atoi(spl);
            ReadNumber(nub,lens);
            printf("\n");
            ncase++;
        }
    }
    return 0;
}
小数据可过,大数据还要改正下

http://code.google.com/codejam/contest/2924486/dashboard

posted @ 2014-02-16 12:39  海滨银枪小霸王  阅读(196)  评论(0编辑  收藏  举报