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 |
你写太长了,很短就可以,不要想难了,这个是超级简单题In Reply To:这题怎么没有要求呀? Posted by:knuthocean at 2005-03-04 15:01:15 > 我写的程序精度很高,但不知道错在哪儿呀,郁闷!!!!! > #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