哈哈,这题交了快50次,
# include<stdio.h>
#include <stdlib.h>
#include<cmath>
int id1[100000];
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
int y[]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9};
int x(char a) {
int w=a-'0',r=a-'A';
if (w>=0&&9>=w)
return w;
else
return y[r];
}
int main()
{
char a[100];
int n,i,j=-1,e,f,d;
scanf("%d",&n);
for (i=0;i<n;i++){
scanf("%s",a);
e=6;
f=0;
for (j=0;*(a+j)!='\0';j++){
if (a[j]!='-') {
f+=x(a[j])*pow(10,e);
e--;
}
}
id1[i]=f;
}
j=-1;
qsort(id1,n,sizeof(id1[0]),cmp);
for(i=0;i<n-1;i++) {
if(id1[i]==id1[i+1]) {
for(j=i;j<n;j++)
if(id1[i]!=id1[j]) break;
printf("%03d-%04d %d\n",id1[i]/10000,id1[i]%10000,j-i);
i=j-1;
}
}
if(j==-1) printf("No duplicates.\n");
}
1.自己写的快排超时。
2.使用数字存储时,输出得注意格式缺0补齐
1252

被折叠的 条评论
为什么被折叠?



