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 |
Re:为什么老是runtime error,本地运行正确啊!!!In Reply To:为什么老是runtime error,本地运行正确啊!!! Posted by:shanjiaoxiaread at 2012-03-28 11:16:51 > #include<stdio.h> > #include<string.h> > #include<stdlib.h> > char result[161]; > char R[161]; > void mypower(char * R,char* R2,char * result){ > char src[161]; > char mid[161]; > char midAdd[161]; > int midAddIndex,midIndex,rigStartAdd; > int rigStart=sizeof(src)-1; > int i=0,temp=0,digit=0,length,length2,j; > > midAddIndex=midIndex=rigStartAdd=sizeof(src)-1; > strcpy(src,R); > length=strlen(src); > length2=strlen(R2); > for( j=0;j<sizeof(src)-1;j++){ > mid[j]='0'; > } > mid[midIndex]='\0'; > for(i=length-1;i>=0;i--){ > if(src[i]=='.') > continue; > rigStartAdd--; > midIndex=rigStartAdd; > for( j=0;j<sizeof(src)-1;j++){ > midAdd[j]='0'; > } > midAddIndex=sizeof(src)-1; > midAdd[midAddIndex--]='\0'; > temp=0; > for(j=length2-1;j>=0;j--){ > if(R2[j]=='.') > continue; > digit=(src[i]-'0')*(R2[j]-'0'); > digit=digit+temp; > midAdd[midAddIndex--]=digit%10+'0'; > temp=digit/10; > } > midAdd[midAddIndex]=temp+'0'; > temp=0; > for(j=sizeof(mid)-2;j>=0;j--){ > temp=mid[midIndex]-'0'+midAdd[j]-'0'+temp; > mid[midIndex--]=temp%10+'0'; > temp=temp/10; > } > mid[midIndex]=temp+'0'; > } > > i=0; > while(result[i]=mid[i]) > i++; > > } > int decimalNum(int n){ > int m=0; > char * p=R; > while(*p!='\0'&&*p!='.'&&m<sizeof(R)){ > p++; > m++; > } > if(*p=='\0') > return 0; > return (n*(strlen(R)-m-1)); > } > void bigIntMulti(char *R,char re[5][161],int n){ > int number; > int i,m,start,end,j; > number=decimalNum(n); > if((n%2)==1) > mypower(result,re[0],result); > n=n/2; > for( i=0;i<4;i++){ > mypower(R,R,re[i+1]); > if((n%2)==1){ > mypower(result,re[i+1],result); > } > n=n/2; > strcpy(R,re[i+1]); > } > end=sizeof(result)-2; > m=end-number; > for(start=0;result[start]=='0';start++); > for(i=0,j=start;j<=m;i++,j++){ > result[i]=result[j]; > } > if(number>0) > result[i++]='.'; > if(m<start) > j=m+1; > for(;j<=end;i++,j++){ > result[i]=result[j]; > } > > while(result[i]=='0'||result[i]=='.') > i--; > result[i+1]='\0'; > printf("%s\n",result); > > } > int main(){ > > char input[100][10]; > int inputN[100]; > char re[5][161]; > int i=0,j; > double temp; > while(scanf("%s %d",input[i],&inputN[i])==2&&i<100) > i++; > for( j=0;j<i;j++){ > temp=(double)strtod(input[j],NULL); > if( ( temp>=99.999) ||(temp<=0.0) ){ > continue; > } > if((inputN[j]<=0)||(inputN[j]>25)){ > continue; > } > > > result[0]='1'; > result[1]='\0'; > strcpy(R,input[j]); > strcpy(re[0],R); > bigIntMulti(R,re,inputN[j]); > } > > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator