📄 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 + -