Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
help,求测试数据总是wronganswer.迷茫 00548259 # include <stdio.h> # include <string.h> # include <stdlib.h> char inputc[100001][100]; long telenum[100001]; int num[100001]; long duplicatenum[100001]; int compare(const void *a,const void *b) { return *(int *)a-*(int *)b; } void main(){ int n,times,i,j,m=0,k=0,l=0,len=0; scanf("%d",&n); int exchange[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}; for(times=0;times<n;times++){//将输入的数经过转换并去掉无用字符存入telenum中 scanf("%s",inputc[times]);//第times个数 len=strlen(inputc[times]); for(i=0;i<len;i++){ if((inputc[times][i]>='0')&&(inputc[times][i]<='9')){ telenum[times]+=long(inputc[times][i]-'0'); telenum[times]*=10; } if((inputc[times][i]>='A')&&(inputc[times][i]<='Y')){ telenum[times]+=long(exchange[inputc[times][i]-'A']); telenum[times]*=10; } } telenum[times]/=10; } qsort((void*)telenum,n,sizeof(int),compare);//把号码按升序排好 i=0; for(;i<n;i++){ for(j=i+1;j<n;j++){ if(telenum[i]!=telenum[j]){//察看已排好的数, num[l]=j-i; if(num[l]!=1){m=-1;} duplicatenum[l]=telenum[i]; l++; i=j-1; if(j==n-1){ num[l]=1; duplicatenum[l]=telenum[j]; } break; } else if(j==n-1){ num[l]=j+1-i; if(num[l]!=1){m=-1;} duplicatenum[l]=telenum[i]; i=j; } } } //当某一个号码的个数不为零的时候,m=-1,否则m==0,No duplicates if(m){ for(j=0;j<=l;j++) if(num[j]>1) printf("%0.3d-%0.4d %d\n",duplicatenum[j]/10000,duplicatenum[j]%10000,num[j]); } else printf("No duplicates\n"); } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator