您的位置:首页 > 其它

zoj 1159 || poj 1002 487-3279

2011-04-09 23:03 465 查看
水题。



poj和zoj输入格式不一样。



zoj PE N次 T T。。水题不解释。



#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits.h>
#include <string.h>
#include <algorithm>
#define MAX 100010
using namespace std;
int a[MAX];
int alp[30] = {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};
int change(char* str)
{
	int len = strlen(str),sum = 0;
	for(int i=0; i<len; i++)
	{
		
		if( isalpha(str[i] ) )
		{
			sum  *= 10;
			sum += alp[str[i]-'A'];
		}
		if( isdigit(str[i]) )
		{
			sum *= 10;
			sum += str[i]-'0';
		}
	}
	return sum;
}
void output(int x,int count)
{
	char str[50];
	sprintf(str,"%d",x);
	int len = strlen(str);
	int k = 7-len;
	for(int i=0; i<k; i++)
	{
		printf("0");
		if( i == 2 )
			printf("-");
	}
	for(int p=k; p<7; p++)
	{
		printf("%c",str[p-k]);
		if( p == 2 )
			printf("-");
	}
	printf(" %d/n",count);
}
int main()
{
	int n,ncases;
	char str[50];
	scanf("%d",&ncases);
	while( ncases-- )
	{
		scanf("%d",&n);
		for(int i=0; i<n; i++)
		{
			scanf("%s",str);
			a[i] = change(str);
		}
		sort( a, a+n );
		int tmp = a[0];
		a
 = -1;
		int count = 1;
		int flag = 0;
		for(int i=1; i<=n; i++)
		{
			if( a[i] != tmp )
			{
				if( count != 1 )
				{
					flag = 1;
					output(tmp,count);
				}
				tmp = a[i];
				count = 1;
			}
			else
				count++;
		}
		if( !flag )
			printf("No duplicates./n");
		if( ncases )
			printf("/n");
	}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: