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 |
请哪位高人指点一下,这个题我已经累计做了10几个小时了。#include "math.h" #include "stdio.h" void main() { int n,i,j,b[100000],d[100000],e[100000][2],x,k; char c; scanf("%d\n",&n);//得到n for(i=0;i<n;i++) { b[i]=0;d[i]=1; for(j=0;(c=getchar())!='\n';j++) { if (c>45&&c<59) {c=c-48;b[i]=b[i]*10+c;} else if (c>=65&&c<=67) {c=2;b[i]=b[i]*10+c;} else if (c>=68&&c<=70) {c=3;b[i]=b[i]*10+c;} else if (c>=71&&c<=73) {c=4;b[i]=b[i]*10+c;} else if (c>=74&&c<=76) {c=5;b[i]=b[i]*10+c;} else if (c>=77&&c<=79) {c=6;b[i]=b[i]*10+c;} else if (c==80||c==82||c==83) {c=7;b[i]=b[i]*10+c;} else if (c>=84&&c<=86) {c=8;b[i]=b[i]*10+c;} else if (c>=87&&c<=89) {c=9;b[i]=b[i]*10+c;} } }/*得到n组数据,输入回车认为一次输入结束。并将电话号码转化为7位数存在b[i]中。关于“0”的问题放在最后解决的*/ for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(b[i]==b[j]) {d[i]++;d[j]=d[j]-100;} } }//将电话的数值比较,并用d[i]储存重复的次数。 j=0; for(i=0;i<n;i++) { if (d[i]>1) {e[j][0]=b[i];e[j][1]=d[i];j++;} }//将有重复的电话的数值挑选出来并与重复次数都存在e[][]中。 for(i=0;i<j;i++) { x=i; for(k=i+1;k<j;k++) { if (e[i][0]>e[k][0]) x=k;//挑出电话数值最小的一个。 } if(e[x][0]>=1000000) printf("%d-%d %d\n",e[x][0]/10000,e[x][0]-e[x][0]/10000*10000,e[x][1]); else if(e[x][0]<10) printf("000-000%d %d\n",e[x][0],e[x][1]); else if(e[x][0]<100) printf("000-00%d %d\n",e[x][0],e[x][1]); else if(e[x][0]<1000) printf("000-0%d %d\n",e[x][0],e[x][1]); else if(e[x][0]<10000) printf("000-%d %d\n",e[x][0],e[x][1]); else if(e[x][0]<100000) printf("00%d-%d %d\n",e[x][0]/10000,e[x][0]-e[x][0]/10000*10000,e[x][1]); else if(e[x][0]<1000000) printf("0%d-%d %d\n",e[x][0]/10000,e[x][0]-e[x][0]/10000*10000,e[x][1]);//对号码中的“0”进行处理。并按升序打印。 e[x][0]=e[i][0]; e[x][1]=e[i][1]; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator