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

为什么会超时?只希望能够指出耗时间的部分,谢!

Posted by xiaoha at 2005-09-03 18:51:20 on Problem 2256
#include<stdio.h>
#include<string.h>
#include<math.h>
void main(){
	char a[200];
	int n,i,j,k,lenth,mid,p1,q1,r1;
	double o,p,q,r,b[100];
	b['m'-'A']=0.001;b['M'-'A']=1000000;b['k'-'A']=1000;
	b[0]=1;b['V'-'A']=1;b['W'-'A']=1;
	scanf("%d\n",&n);
	for(i=1;i<=n;i++){
		printf("Problem #%d\n",i);
		gets(a);
		lenth=strlen(a);
		p1=0;q1=0;r1=0;
		for(j=0;j<lenth;j++){
			if(a[j]=='P'||a[j]=='I'||a[j]=='U'){
				k=j+2;o=0;
				for(;;k++)
					if(a[k]<'0'||a[k]>'9')
						break;
				mid=k;k=j+2;
				for(;(a[k]>='0'&&a[k]<='9')||a[k]=='.';k++){
					if(k<mid)
						o+=(a[k]-'0')*pow(10,mid-k-1);
					if(k>mid)
						o+=(a[k]-'0')*pow(10,mid-k);
				}
				o*=b[a[k]-'A'];
				switch(a[j]){
				case 'P':{
					p=o;p1=1;break;
						 }
				case 'I':{
					q=o;q1=1;break;
						 }
				case 'U':{
					r=o;r1=1;break;
						 }
				}
				for(;;k++)
					if(a[k]=='A'||a[k]=='V'||a[k]=='W')
						break;
				j=k+1;
			}
		}
		if(p1==0)
			printf("P=%.2lfW\n\n",q*r);
		if(q1==0)
			printf("I=%.2lfA\n\n",p/r);
		if(r1==0)
			printf("U=%.2lfV\n\n",p/q);
	}
}

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