⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1002.cpp

📁 pku acm 1002,自己写的
💻 CPP
字号:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

char f(char c)
{
	switch (c)
	{
	case 'A':
	case 'B':
	case 'C':c='2';break;
	case 'D':
	case 'E':
	case 'F':c='3';break;
	case 'G':
	case 'H':
	case 'I':c='4';break;
	case 'J':
	case 'K':
	case 'L':c='5';break;
	case 'M':
	case 'N':
	case 'O':c='6';break;
	case 'P':
	case 'R':
	case 'S':c='7';break;
	case 'T':
	case 'U':
	case 'V':c='8';break;
	case 'W':
	case 'X':
	case 'Y':c='9';break;
	}
	return c;
}

void creat(long num[],int n)
{ 
     int i,k;
	 char ch[8],str;
     for(i=0;i<n;i++)
     {  
        k=0;
		while (k!=7)
		{
			str=getchar();
			if ((str>='0')&&(str<='9')||(str>='A')&&(str<'Z')&&(str!='Q'))
				ch[k++]=f(str);
		}    
		ch[7]='\0';
		num[i]=atol(ch);
      }
}

long devide(long num[],long a,long b)
{
	long i=a,j=b+1,m=num[a],t;
	while(1)
	{
		while(num[++i]<m&&i<b);
		while(num[--j]>m);
		if(i>=j)break;
		t=num[i];
		num[i]=num[j];
		num[j]=t;
	}
	num[a]=num[j];
	num[j]=m;
	return j;
}

void sort(long num[],long a,long b)
{
	long c;
	if (a<b)
	{
		c=devide(num,a,b);
		sort(num,a,c-1);
		sort(num,c+1,b);
	}
		


}

void print(long num[],int n)
{
	int i,a=1,k=0;
    for (i=0;i<n;i++)
	{
		if (num[i]!=num[i+1])
		{
			if (a>1)
			{
				printf("%03d-%04d %d\n",num[i]/10000,num[i]%10000,a);
				k++;
				a=1;
			}
		}
		else 
			a++;
	}
	if(k==0)
		printf("No duplicates. ");
}

main()
{
	int n;
	long num[100001];
	
	scanf("%d\n",&n);

	creat(num,n);
	
	sort(num,0,n-1);

	print(num,n);
	
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -