Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

1.O(n^2)级的排序不能接受 2.输出其实不必那么复杂,printf("%.xd",y)就会输出y,宽度为x,不足则补零

Posted by dynamic at 2003-11-28 23:13:05 on Problem 1002
In Reply To:请哪位高人指点一下,这个题我已经累计做了10几个小时了。 Posted by:ass at 2003-11-28 22:47:58
> #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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator