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

Re:你换C++交看看 貌似我当时就是C++可以过,G++wa,可能有精度问题...

Posted by ASCII at 2007-03-23 12:10:52 on Problem 1064
In Reply To:wa死了!!冰天雪地裸地跪求高手指正错误!!! Posted by:testSky at 2007-03-23 12:05:22
> #include <stdio.h>
> #include <stdlib.h>
> 
> long	buf[100000];
> int	countElement=0;
> int	K;
> 
> const int isEqual=0;
> const int tooSmall=1;
> const int tooLarge=2;
> 
> int iterative(long l){
> 	int	total=0;
> 	int	i;
> 	for(i=0;i<countElement;i++){
> 		total+=buf[i]/l;
> 	}
> 	if(total>K)
> 		return tooLarge;
> 	else if(total==K){
> 		return isEqual;
> 	}else	
> 		return tooSmall;
> }
> int main(){
> 	int	N;
> 	int	i,j,tag,result;
> 	char	tmp[30];
> 	char*	ptr;
> 	long	min,a,b,l,sum;
> 	scanf("%d %d",&N,&K);
> 	
> 	min=1000000;
> 	sum=0;
> 	for(i=0;i<N;i++){
> 		memset(tmp,0,sizeof(tmp));
> 		scanf("%s",&tmp);
> 		ptr=strchr(tmp,'.');
> 		strncpy(ptr,ptr+1,2);
> 		ptr[2]='\0';
> 		buf[countElement]=atol(tmp);
> 		if(min>buf[countElement]){
> 			min=buf[countElement];
> 		}
> 		sum+=buf[countElement];
> 		countElement++;
> 		
> 	}
> 	int	store=0;
> 	if(sum<K){
> 		result=0;
> 	}else{
> 		a=1;
> 		b=min;	
> 		result=0;
> 		while(a<=b){
> 			l=(a+b)/2;
> 			if(l==0){
> 				break;
> 			}
> 			tag=iterative(l);
> 			if(tag==isEqual){
> 				result=l;
> 				a=l+1;
> 			}else if(tag==tooLarge){
> 				a=l+1;
> 				result=l;
> 			}else if(tag==tooSmall){
> 				b=l-1;
> 			}
> 		}
> 	}
> 	printf("%.2lf\n",(double)result/100);
> 	return	0;
> }

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