2974:487-3279

哈哈,这题交了快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补齐


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值