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 |
这题怎么没有要求呀?我写的程序精度很高,但不知道错在哪儿呀,郁闷!!!!! #include <stdio.h> #include <iostream.h> #include <math.h> int multiply(int* a,int m,int* b,int n,int* c) { int i,j,k,r,t; for(i=0;i<m;i++) c[i]=0; for(j=0;j<n;j++){ r=0; for(k=0;k<m;k++){ t=a[k]*b[j]+c[k+j]+r; c[k+j]=t%10; r=t/10; } c[j+m]=r; } int len=m+n; while((len>1)&&(c[len-1]==0)) len--; return len; } int sum(int a[],int b[],int lena,int lenb) { int len=(lena>=lenb)?lena:lenb; int i; a[len]=0; if(len==lena){ for(i=lenb;i<lena;i++) b[i]=0; } else for(i=lena;i<lenb;i++) a[i]=0; for(i=0;i<len;i++){ a[i]=a[i]+b[i]; if(a[i]>=10){ a[i]-=10;a[i+1]++;} } if(a[len]>0) len++; return len; } void main() { int n; int i; int k; int x[400],y[400],z[800]; int z1[800],z2[800]; int result[820]; int pi[15]={3,1,4,1,5,9,2,6,5,3,5,8,9,7,9}; for(i=0;i<7;i++){ int swap=pi[i]; pi[i]=pi[14-i]; pi[14-i]=swap; } cin>>n; long *record=new long[n+1]; for(k=0;k<n;k++){ char c; int xpoints=0,ypoints=0; int lenx=0,leny=0; i=0; int flag=0; while(1){ scanf("%c",&c); if(c==' ') break; if(c!='.'){ if(flag) xpoints++; x[i]=c-'0'; i++; lenx++; } else flag=1; } if((x[0]==((int)'-' - (int)'0'))||((x[0]==(int)'+' - (int)'0'))){ lenx--; for(i=0;i<lenx;i++) x[i]=x[i+1]; } flag=0;i=0; while(1){ scanf("%c",&c); if(c=='\n') break; if(c!='.'){ if(flag) ypoints++; y[i]=c-'0'; i++; leny++; } else flag=1; } i=0; if(y[i]==((int)' ' - (int)'0')){ while((y[i]==((int)' ' - (int)'0'))&&(i<(leny-1))) i++; leny-=i; for(int index=0;index<leny;index++) y[index]=y[index+i]; } i=0; if(y[i]==(int)'+' - (int)'0'){ leny--; for(i=0;i<leny;i++) y[i]=y[i+1]; } while((lenx>1)&&(x[lenx-1]==0)&&(xpoints>0)) {lenx--;xpoints--;} while((leny>1)&&(y[leny-1]==0)&&(ypoints>0)) {leny--;ypoints--;} int temp; for(i=0;i<lenx/2;i++){ temp=x[i]; x[i]=x[lenx-1-i]; x[lenx-1-i]=temp; } for(i=0;i<leny/2;i++){ temp=y[i]; y[i]=y[leny-1-i]; y[leny-1-i]=temp; } int lenz1=multiply(x,lenx,x,lenx,z1); int lenz2=multiply(y,leny,y,leny,z2); xpoints+=xpoints;ypoints+=ypoints; int num; if(xpoints>ypoints){ num=xpoints-ypoints; for(i=lenz2-1;i>=0;i--) z2[i+num]=z2[i]; for(i=0;i<num;i++) z2[i]=0; lenz2+=num; } else if(xpoints<ypoints){ num=ypoints-xpoints; for(i=lenz1-1;i>=0;i--) z1[i+num]=z1[i]; for(i=0;i<num;i++) z1[i]=0; lenz1+=num; } int lenz=sum(z1,z2,lenz1,lenz2); for(i=0;i<lenz;i++) z[i]=z1[i]; int length=multiply(z,lenz,pi,15,result); int points=14; points+=(xpoints>=ypoints)?xpoints:ypoints; long l=0; for(i=length-1;i>=points+2;i--) l=l*10+(long)result[i]; record[k]=l+1; } for(k=0;k<n;k++) cout<<"Property "<<k+1<<": This property will begin eroding in year "<<record[k]<<"."<<endl; cout<<"END OF OUTPUT."<<endl; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator