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

求大神指导。。我的执行结果怎么总是WA啊?什么特殊数据我都测试了 都对啊。。。

Posted by herotom at 2012-08-31 15:21:24 on Problem 1001
#include <stdio.h>
int shuru(int A[150],int B[150]){
	int a=0;
		do{
			scanf("%c",&A[a]);
			if (A[a]=='.'){
				B[0]=a;
				a--;
			}
			if(A[a]==' '){
				B[1]=a;
				a--;
			}
			a++;
		}
	while (A[a-1]!='\n');
	return (a-2);

}
void rightmv(int A[150],int a){
	int m;
	for(m=a;m>=0;m--){
		A[149+m-a]=A[m];
		A[m]=0;
	}
}
void chan(int A[150],int B[150],int a){
	int b;
	for(b=149;b>=149-a;b--){
		A[b]=A[b]-48;
	}
	for(b=0;b<=149;b++){
		B[b]=A[b];
	}
}
void leftmv(int C[150],int p){
	int z;
	for(z=p;z<=149;z++){
		C[z-p]=C[z];
	}
	for(z=149;z>149-p;z--)
		C[z]=0;
}
void cacul(int A[150],int B[150],int i,int j){
    int C[150]={0};
	int D[150]={0};
	int z,x,a,b;
	for(i;i>1;i--){
		for(a=149;a>=0;a--){
			for(b=149;b>=149-j;b--){
				C[b]=A[a]*B[b]+C[b];
				z=C[b]/10;
				C[b]=C[b]%10;
				C[b-1]=C[b-1]+z;
			}
			leftmv(C,149-a);
			for(z=0;z<=149;z++){
				D[z]=C[z]+D[z];
			}
			for(z=149;z>=0;z--){
				if(D[z]>=10){
					x=D[z]/10;
					D[z]=D[z]%10;
					D[z-1]=D[z-1]+x;
				}
			}
			for(z=0;z<=149;z++){
				C[z]=0;
			}
		}
		for(z=0;z<=149;z++){
			A[z]=D[z];
			D[z]=0;
		}
		
	}

}
int quling1(int A[150],int j){
	int a;
	for(a=150-j;a<=149;a++){
		if(A[a]!=0)
			return 1;
	}
	 return 0;
}
int quling2(int A[150],int j){
	int a;
	for(a=149;a>=150-j;a--)
		if(A[a]!=0)
			return a;
}
void main(){
	int a,i,j,m,n,x,y;
	int A[150]={0};
	int B[150]={0};
	i=shuru(A,B);
	m=B[0];
	n=B[1];
	B[0]=0;
	B[1]=0;
	if (A[n+1]!='\n'){
		i=A[n+1]-48;
		A[n]=A[n]-48;
		i=A[n]*10+i;
	}
	else i=A[n]-48;
	A[n]=0;
	A[n+1]=0;
	rightmv(A,n-1);
	chan(A,B,n-1);
	cacul(A,B,i,n-1);
	if (m!=0){
		j=(n-m)*i;
		for (a=10;a<=149;a++){
			if (A[a]==0)
				continue;
			break;
		}
		for(a;a<=149-j;a++)
		printf("%d",A[a]);
		x=quling1(A,j);
		y=quling2(A,j);
		if (x==1){
			printf(".");
			for(a=150-j;a<=y;a++)
			printf("%d",A[a]);
		}
	}
	if(m==0){
		for (a=10;a<=149;a++){
			if (A[a]==0)
				continue;
			break;
		}
		for(a;a<=149;a++)
		printf("%d",A[a]);
		
	}
}


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